ZABBIX全栈级监控实践
(一)概述
Shawn Cai
《ZABBIX全栈级监控实践》系列将由浅入深探讨如何实现ZABBIX全栈级别的监控。
本文是《ZABBIX全栈级监控实践》的第一篇:主要讨论全栈级监控的主要需求,以及ZABBIX在实现全栈级监控中的优势。
引论
随着移动互联网、Fintech等概念的 流行,对于IT从业人员的技术要求越来越高。更是有企业在招聘时,直接提出了招聘全栈工程师。什么是全栈,ZABBIX对于全栈级监控有什么优势?我们逐一讲解。
全栈的概念
对于IT运维人员而言,所谓全栈(Full-Stack),包含了从前端到后端的所有运维知识体系,包括但不限于:
客户端(用户操作系统,POS机等)
网络层(机房、专线、网络设备等)
接入层(负载均衡、反向代理等)
应用服务层(中间件、数据库、自研应用等)
操作系统(Windows,Linux,AIX等)
虚拟化(vmWare,Hyper-V,Xen等)
存储(NetApp,EMC,阵列等)
硬件(华为,HP,DELL等)
……
以上是粗略的前端到后端所需技能及平台,现实中全栈会包含更多的维度,每个维度中也会有更多的内容。
由于从前端到后端的种种耦合性和依赖关系,任何一个环节的故障发生,都有可能导致业务中断。对于IT监控平台而言,尽可能全面的监控上述维度中的平台、内容,会有效减少依赖IT专业人员人工定位故障的频率,提升企业业务连续性的RTO和RPO。
为什么使用ZABBIX进行全栈级监控?
目前市场上有很多商业的和开源的软件:微软的System Center Operations Manager;IBM的Tivoli;VMware的vSphere with Operations Management套件等,都能对厂商的自有平台提供深入监控。如果企业生产环境中,只存在一两个厂商的产品,不存在多样性,那么用这些厂商自有的系统管理套件就足够了。
而对于大多数企业而言,IT基础环境是一个无比复杂的异构体。很少有公司只用cisco交换机,只用Windows操作系统,只用HP的服务器,或者只用NetApp存储。在这个由大量的厂商和品牌充斥IT基础架构环境中,似乎并没有提供一个统一协议或者标准来实现全栈级监控。厂商的系统管理平台可以进行深入监控,但现实中的异构IT基础架构,对监控平台的广度有更多的要求。
当然,还碰到过一些自研发的厂商,号称所有产品的监控都能做,结果发现,的确什么都能监控,存储、交换机、服务器都能监控,但只能监控到可用性:ICMP。而至于更深层的性能:比如磁盘IO,数据库性能,存储延迟之类的,都无从下手……因此,一个合格的监控系统需要提供一定的深度监控:可用性监控,性能监控,甚至是日志监控。
ZABBIX在广度和深度这两个维度寻找到了一个很好的平衡点。
ZABBIX可以通过JAVA GATEWAY进行原生的应用级监控,包括JVM的状态,连接数等。对于其他的中间件和数据库,也有相应的模版可供使用。
对于操作系统,ZABBIX官方也提供了一些模版,对常见的Windows,Linux等操作系统进行监控。其中也包含了很多如磁盘IO的性能监控项。
通过SNMP协议,ZABBIX可以对交换机和存储的性能及可用性进行监控。
ZABBIX可以对底层的硬件进行监控,可以通过IPMI带外协议监控每个磁盘、每个内存、每个CPU的状态,甚至是某个风扇的转速。
Zabbix监控平台支持的监控方式多种多样:
以上只是ZABBIX监控平台覆盖的一部分。除了这两点以外,相比于其他系统管理平台,ZABBIX还有以下的优势:
开源性:源代码全公开,任何用户都可以编译和发布自己的版本。同时,ZABBIX社区中有大量的模版。
可扩展性:支持用户自定义监控项,只要能想得到的KPI,基本都能监控的到。
分布式:分布式架构,提供多分支组织的IT监控解决方案。同时,也一定程度上分散监控压力。
无商业版本:平台本身没有商业版和社区版本的区分,ZABBIX母公司只对商业服务收费(如培训、定制开发、部署服务等)。
Zabbix其他的主要功能还有:
高可用、高负载(可监控几万台Hosts)
自动发现网络设备和服务器
低级别发现(LLD)
集中式管理、分布式监控
同时支持Polling和Trapper两种监控方式
高性能的监控代理
无代理的监控方式
JMX监控
Web监控
安全的用户认证机制
灵活的用户权限配置
基于WEB的接口
基于SLA、ITIL KPI的报表
灵活的EMAIL通知及事件预定义
商业产品级别的DashBoard和Screen
日志审计
……
Zabbix上述特性,满足了我们对全栈级别监控的要求,在本系列的后续文章中,将会向大家介绍如何使用ZABBIX监控进行全栈式监控。