ZABBIX监控系统功能特点及实用性研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ZABBIX监控系统功能特点及实用性研究
摘要电网信息化的不断发展,促使信息机房的硬件、软件设备种类、数据量逐渐庞大,业务系统逻辑也越来越复杂,电网内部各业务系统高效、安全运行,离不开对机房各类设备的监控。

传统运维采用的人工巡检的方式,巡检时间长,巡检效率低,误操作几率大。

本文将测试ZABBIX监控软件的功能,通过实际的使用情况,测试其对软硬件资源的实时、准确的监控能力。

关键词IT监控;ZABBIX;软硬件监控;自动化运维
前言
随着信息化的不断发展,使信息机房规模逐渐庞大,各类软、硬件资产数量激增,网络拓扑结构越来越复杂。

为了达到实时、准确掌控业务系统软硬件的运行状况的目的,需要一套强有力的监控工具,本文將从理论和实践两个方面对企业级开源监控系统ZABBIX的功能和实用性进行研究,并且作出评估结果。

1 ZABBIX简介
Zabbix是一个企业级的开源分布式监控解决方案,可自由下载使用,Zabbix 通过客户端/服务器模式采集数据,通过浏览器/服务器模式在web端展示和配置。

服务器端通过收集IPMI、SNMP和agent、JMX发送的数据,写入MySQL、oracle、DB2、postgresql、sqlserver等主流数据库,再通过php+Apache(Nginx)在web 前端展示。

被监控端主机通过安装agent方式采集数据,网络设备通过SNMP方式采集數据。

Zabbix具备常见的商业监控软件所具备的功能(主机的性能监控、硬件监控、应用性能监控(APM)、网络设备性能监控、数据库性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制);同时Zabbix支持自动发现网络设备和服务器,支持分布式部署,集中展示和管理分布式的监控点;具备很强的扩展性,并且提供通用接口,可以按需开发定制各类监控[1]。

Zabbix架构图如下所示:
2 核心功能及组件
2.1 基本组件和进程
(1)常用组件
zabbix由以下几个组件部分构成:
①Zabbix Server:负责接收agent采集的数据的核心组件。

配置信息、统计数据、操作数据都是其组织进行;②Database Storage:专用于存储配置信息和zabbix收集的数据;③Web interface:zabbix的图形化接口,与Server运行在同
一台主机上;④Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;⑤Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;
(2)常用进程
通常情况下zabbix包含zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server、zabbix_java_gateway。

①zabbix_agentd
客户端守护进程,此进程收集监控指标数据,例如cpu负载、内存、硬盘、网络流量等。

②zabbix_get
zabbix工具,通常用于server或者proxy端执行获取远程客户端信息的命令。

通常用于排错。

例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

③zabbix_sender
zabbix工具,用于发送数据给server或者proxy,通常用于执行时间比较长的监控指标。

很多监控指标采集过程非常耗时,容易导致zabbix超时。

所以我们在脚本执行完毕之后,使用zabbix_sender主动提交数据。

④zabbix_server
zabbix服务端守护进程。

zabbix_get、zabbix_agentd、zabbix_proxy、zabbix_sender、zabbix_java_gateway的数据最终都是提交到zabbix_server
⑤zabbix_proxy
zabbix代理守护进程。

功能类似zabbix_server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到zabbix_server里。

⑥zabbix_java_gateway
这是zabbix2.0之后引入的一个功能。

只用于Java中间件数据采集方面,它只能主动去获取数据,而不能被动获取数据。

它的数据最终会给到zabbix_server 或者zabbix_proxy。

2.2 特色功能介绍
(1)自动发现和自动注册
①网络发现是zabbix最具特色的功能之一,它能能够根据用户事先定义的规则自动添加监控主机或服务等,Zabbix的网络发现功能可以基于:IP ranges、Availability of external services(FTP、SSH、WEB、POP3、IMAP、TCP、etc)、Information recevived from zabbix agent、Information recevived from SNMP agent.。

网络发现通常包含两个阶段:discovery和actions。

A、Discovery中的事件包括:Service Up、Service Down、Host Up、Host Down、Service Discovered、Service Lost、Host Discovered、Host Lost
B、Action,网络发现中的事件可以触发action,从而自动执行指定的操作,如:Sending notifications、Adding/removing hosts、Enabling/disabling hosts、Adding hosts to group、Removing hosts from a group、Linking hosts to/unlinking from a template、Executing remote scripts②Zabbix支持active agent的自动注册(auto-resisitration)功能,通常用于此前故障的agent重新上线的场景,也可基于active agent的自动注册机制添加被动检测,这会通过active agent注册时提供的”ListenIP”和”ListenPort”进行,Server端在收到自动注册请求后以接收到的IP 和Port为接口属性。

(2)分布式监视
Zabbix 是一个分布式监控系统,它可以以一个中心点、多个分节点的模式运行,使用proxy 能降低Zabbix Server 的压力,适用范围包括跨机房、跨地域的网络监控系统,可以监控拥有不可靠网络连接的区域,简化分布式监控的维护,分担Zabbix Server 压力。

(3)WEB集中管理
通过在zabbix web管理界面上进行一系列的配置,包括主机、监控项、模板、自动发现规则、告警配置以及各种指标的数据展示图,简言之,zabbix提供了一套指标配置以及把服务器关键指标转化为与时间相关的图表的流程。

系统管理员可以从这些图表中更容易地分析出系统存在的问题[2]。

(4)监控范围
Zabbix支持SNMP、IPMI、agent、无agent等监控类型,监控范围包括:
支持应用程序性能:JVM monitoring、HTTP monitoring、SQL monitoring、EJB monitoring、JMS monitoring、SOAP monitoring、REST monitoring、LDAP monitoring、Configuring tracer、Trappers、Audit log、Agent logging。

支持常见中间件监控:JBoss 4/5/6、JBoss 7.x、Wildfly 8、Jetty 6/7/8/9、Tomcat 6/7/8Mule ESB、Websphere 7.x/8、GlassFish 4.0、Oracle WebLogic.
支持主流操作系统监控:Linux、AIX、Windows、hpux.
支持网络设备监控:主流交换机、路由器等
支持硬件設备监控:支持IPMI协议的设备均可配置监控
3 核心功能实用性测试
3.1 监控配置简易性
由于有web前端的支持,Zabbix监控配置比较简单,比如我们可以通过浏览器访问
http://IP/zabbix来开始配置和使用zabbix。

Zabbix的基本监控流程可以大概的描述为:Host Groups(主机组)->Hosts(主机)->Applications(監控项属组)->Items(监控项)->Triggers(触发器)->Actions(触发器动作)->Medias (告警媒介)->User Groups(用户组)->Users(用户)。

下面以主机监控配置、监控项添加、触发器添加、告警动作配置为例说明zabbix监控配置的简易性:
(1)主机监控配置流程
通过web主界面依次进入Configuration->Hosts->Create Host来创建监控主机Host是Zabbix监控的基本载体,所有的监控项都是基于host的。

在配置界面输入Name、Groups、IP,其他选项的意义可参考官方手册,一般保持默认值即可,打开Link Templates 选择一个模板,save即可成功添加设备。

(注意:必须首先在受监控主机安装agent,否则添加后的监控项状态会是unmonitor,Zabbix自带大量的设备监控模板,我们添加主机时通过链接到这些模板,就可以快速添加主机的监控项和告警触发条件)同一类的hosts归类为同一个Host Group,便于分类管理,在Configuration->Host Group->Create Host Group 可以添加设备组。

(2)Item即是监控项
作为监控系统的基本元素,每一个监控项对应一个被监控端的采集指标。

监控项必须属于某个模板或者主机,所以在配置监控之前必须先有模板或者主机。

进入Configuration->Hosts界面,我们看到每个host所包含的items总数,点击对应主机的items项,可以看到具体的每个item信息,这些items可以引用自templates,也可以自己创建。

通过点击item名字可以修改监控项的属性,点击Status的链接可以禁用/启用这个监控项。

(3)在zabbix中,Trigger是触发器,当Items采集值满足triggers的触发条件时,就会产生actions。

通过web主界面进入Configuration->Hosts->Triggers 中某个trigger的名字,可以修改trigger的属性。

新增trigger可以通过此界面右上角的create trigger创建。

(4)在zabbix中,告警动作称作Action,当触发器条件被满足时,会执行指定的action。

通过zabbix主界面按如下顺序Configuration->Actions->Create Action进入动作配置界面来创建Action:
Name:告警名称。

Subject/Message:告警标题和内容,此处可引用zabbix的宏变量;更多宏变量参考官方手册。

Recovery Message:告警恢复信息
Conditions:trigger产生条件。

New condition:添加新的触发规则。

Operation:告警方式选择media 及告警接收用户。

3.2 监控采集实时性及准确性
本节内容测试zabbix数据采集的实时性和准确性,测试方法:通过Zabbix 主界面“最新数据”界面查看作为测试样本的监控項的最新采集值,同时在受监控服务器上面对同一个监控项采用本地工具在相同时间点查看指标值,若两个值相同,则说明zabbix的数据采集是准确的,同时也说明了zabbix数据采集的及时性。

以监控服务器磁盘空间使用率为例,监控项名称为Used disk space on /home,监控项键值为vfs.fs.size[/home,free],下图一所示为服务器本地磁盘空间使用情况,home目录的使用量约为177M。

图二所示为zabbix最新数据采集界面home空间取值约为177M。

由以上对比可知,zabbix数据采集准确而及时,完全满足监控的实时性、准确性的需求。

3.3 告警及时性及准确性
本节测试zabbix监控告警的及时性及准确性,我们以可用内存监控项Heap Memory:used为例,其键值为zorka.jmx[“java”,”ng:type=Memory”,”HeapMemoryUsage”,”used”],测试方法:通过Zabbix主界面配置触发器阈值,为了方便测试,我们将触发器阈值调整到低于当前已使用堆内存量,事件触发条件设为堆内存使用量高于X即产生告警。

这样下一次采集到监控项值时即可触发告警,与此同时触发动作(发送告警邮件,动作配置过程参考4.1节)发送告警邮件。

在这个过程中,从触发器被触发到收到告警邮件之间的时间应该越短说明告警触发的及时性越好,同时也说明阈值的设置被zabbix
服务器准确检测到。

先定义一个触发器阈值及函数:此触发器的含义是当已使用的堆内存量大于零即产生告警。

下图为被测试监控项的最新采集值,可以看出此值大于零,触发器一定会被触发,并且可以从图中看到采集时间点事是16:40:58。

我们收到的告警邮件如下图所示,从我们收到的告警邮件内容和时间可知,邮件发送时间为16:41:02,由此可见触发器被触发时,邮件动作被及时执行,证明zabbix的告警触发的准确性和及时性都是非常高的。

3.4 API调用演示
Zabbix的功能虽然很强大,能将数据以图表形式展现在Web中,但是,一个监控系统的使用者如果不了解Zabbix,或者其非维护人员需要通过监控了解各个服务器大致运行状况时,Zabbix所提供的界面就显得不那么友好。

Zabbix API 恰好解决了这一问题。

我们可以从zabbix的API接口中读取需要的数据,用自己的方式展现在Web中。

Zabbix API 是基于前端http 协议实现的,也就是可以通过HTTP 请求实现的API。

API 数据传输采用JSON RPC 协议。

由于Zabbix的web前端是PHP 语言编程的,而PHP 的性能和相关配置参数有极大关系,因此,如果在大型的环境使用,可以对php 进行负载均衡,例如开启php多进程等方式来解决负载问题。

除了对服务器本身进行优化,尽量减少对API 的调用,也是集成第三方系统应该遵循的一个原则。

API 基本步骤
(1)连接http://10.111.X.X/zabbix/api_jsonrpc.php,提供用户名密码,并标示HTTP头部Content-Type”:”application/json”,HTTP方法为post。

(2)获取SESSIONID
(3)通过SESSIONID建立后续的连接
(4)提交POST数据,格式为json,里面放对应的方法,获取需要的数据
下面以zabbixapi使用python的例子,在这个例子中,通过API去获取主机的信息:
基于curl命令:
A.认证并且取得加密字段
curl -i -X POST -H ‘Content-Type:application/json’-d ‘{“jsonrpc”:
“2.0”,”method”:”user.login”,”params”:{“user”:”xxxx”,”password”:”xxxx”},”auth”:
null,”id”:0}’http://10.111.5.136/zabbix/api_jsonrpc.php
#之后会得到一串输出:{“jsonrpc”:”2.0”,”result”:”xxxxca79a0795ccc1224dc76329972f”,”id”:0}。

记住这段输出。

B.获取监控主机的hostids
curl -i -X POST -H ‘Content-Type:application/json’-d ‘{“jsonrpc”:“2.0”,”method”:”host.get”,”params”:{“output”:[“hostid”],”filter”:{“host”:”x.x.x.x”}},”auth”:“xxxxfca79a0795ccc1224dc76329972f”,”id”:0}’http://x.x.x.x/zabbix/api_jsonrpc.php
#”hostid”:”10241”
C、獲得监控项itemids
curl -i -X POST -H ‘Content-Type:application/json’-d ‘{“jsonrpc”:“2.0”,”method”:”item.get”,”params”:{“output”:”itemids”,”hostids”:”10243”,”search”:{“key_”:”system.cpu.util[,idle,avg1]”}},”auth”:“xxxxfca79a0795ccc1224dc76329972f”,”id”:0}’http://x.x.x.x/zabbix/api_jsonrpc.php
#“item”:”24526”
D、獲取监控项”system.cpu.util[,idle,avg1]”在2015.3.19 14:00~14:30的值
curl -i -X POST -H ‘Content-Type:application/json’-d ‘{“jsonrpc”:“2.0”,”method”:”history.get”,”params”:{“history”:0,”itemids”:[“24526”],”time_from”:”1392789600”,”time_till”:”1392790200”,”output”:”extend”},”auth”:“xxxxfca79a0795ccc1224dc76329972f”,”id”:0}’http://x.x.x.x/zabbix/api_jsonrpc.php
#输出:
[{“itemid”:”24526”,”clock”:”1392789646”,”value”:”95.7539”,”ns”:”138978589”},
{“itemid”:”24526”,”clock”:”1392789706”,”value”:”84.9595”,”ns”:
”578198422”},
{“itemid”:”24526”,”clock”:”1392789766”,”value”:”94.5259”,”ns”:”186216653”}]
#“value”就是cpu idle值,采样间隔时间与监控项的数据更新时间一致。

从以上演示可以看出,zabbix提供功能强大的API,方便易用,可基于此开发定制所需功能[3]。

4 结束语
综上所述,Zabbix是一个开源的企业级的分布式监控项目,使用GPL协议。

Zabbix有两种采集监控数据的方式,一种是由Server端向Client端拉取数据,另一种是由Client主动向Server端推送数据。

使用过程中,可根据实际需求灵活选择。

同时根据实际安装部署过程可知,zabbix安装部署简易,可以快速部署;并且提供web界面,方便管理员快速配置、修改各项配置,达到开箱即用的目的。

除此之外zabbix功能丰富,成熟度高,安全稳定,比如提供强大的API以便用户二次开发各种功能;还提供底层发现功能,此功能用于动态资源监控,方便、易用、高效。

通过实际测试可知,zabbix数据采集具备高准确度和实时性,触发器及告警准确及时。

基于诸多优点,zabbix完全能够胜任大型企业的资源监控。

参考文献
[1] 佚名.Zabbix使用手冊V2.0[EB/OL].https:///view/a2210c4ba21614791711287d.html,2014-8-17.
[2] Uytterhoeven P. Zabbix Cookbook[M].Birmingham:Packt Publishing,2015.佚名.Zabbix lld讲解与发现端口监控[EB/OL].http:///article/detail/126392.2016-12-06.。

相关文档
最新文档