发布时间 : 星期一 文章Zabbix深入分析2014 - 图文更新完毕开始阅读7744db0f783e0912a2162add
Zabbix深入分析
2 系统架构
图:Zabbix架构
WEB GUIAlerterEscalatorPollerDATAConfig syncerOtherPollerDATAHistory syncerDATATrapperDATAHistory syncerTrapperDatabase
图:Zabbix基本数据流
9/94
Zabbix深入分析
2.1 Server
Server执行轮询和捕获数据,它计算监控项,给用户发送报警信息。它是Zabbix的核心组件,agent和proxies向它报告系统可用性及完整性的数据。server本身就可以使用简单服务检测来检测远程网络服务(比如web服务器和mail服务器)。
Server是存储有配置文件、统计信息和操作信息的核心资源库,当被监控系统任何一部分出现问题时,它向管理员发送报警信息。
一个基本的Zabbix Server被分为三个不同的组件:Zabbxi Server、基于Web的管理界面(web frontend)和数据库存储。
所有的Zabbix配置信息存储在数据库中,Server和frontend与数据库进行交互。例如,当你用frontend或者API创建一个新的监控项时,事实上是被加入到数据库的监控项表。然后,大约一分钟后,Zabbix Server将查询监控项表获取数据库中的可用监控项并把它们存储在Server缓存中。这就是为什么当你在frontend中做任何改变,需要等两分钟后才会在最新数据这一部分反映出来。
2.2 数据库存储(Database storage)
所有的配置信息以及Zabbix采集的数据都保存在数据库中。
2.3 WEB 界面
为方便从不同平台去访问管理Zabbix,Zabbix提供了一个基于WEB的界面,可以通过界面实现监控及其各项系统配置管理。WEB界面作为 Zabbix Server的一部分也可以运行在不同的物理服务器上。
2.4 Proxy
在Zabbix的部署中Zabbix Proxy是一个可选的组件。一个Zabbix代理(Proxies)可以代表Zabbix服务器收集性能和可用性数据。这样,代理(Proxies)可以负担采集数据的任务并且减轻Zabbix服务器负载。
同时,使用代理(Proxies)是实施统一和分布式监控的最简单方式,因为所有的客户端和代理(Proxies)向一个Zabbix服务器报告数据,并且所有数据集中保存在服务器数据库。
10/94
Zabbix深入分析
图:Zabbix Proxy示意图
一个Zabbix代理(Proxies)可以用在以下: ? 监控远程区域;
? 监控拥有不可靠链接的区域;
? 当监控数以千计的设备时分担Zabbix服务器的负载; ? 简化分布式监控的维护;
所有代理(Proxies)采集到的数据在传送给服务器之前都保存在本地。这样,临时与服务器断开连接也不会导致数据丢失。proxy配置文件中的参数ProxyLocalBuffer 和 ProxyOfflineBuffer控制数据在本地保存多久。
Zabbix代理(Proxies)是一个数据收集器。它不进行触发器计算,处理事件或发送报警信息。
2.5 Agent
Zabbix客户端代理(Agent)部署在被监控目标上,用于监测本地资源和应用(硬盘,内存,处理器统计等)。
Zabbix客户端代理(Agent)用于采集本地当前信息并向Zabbix server报告以做进一步处理。在发生故障时(例如磁盘满或服务进程崩溃),Zabbix server可以积极的发送报警信息提醒管理员注意相应的情况。
由于使用了内地系统调用来采集统计信息,Zabbix客户端代理(Agent)十分高效。
被动与主动检测
11/94
Zabbix深入分析
Zabbix客户端代理(Agent)可以执行被动和主动检测。在被动检测中,Zabbix客户端代理(Agent)负责数据请求。服务器或代理请求数据,例如,CPU负载,客户端代理返回结果。
主动检测需要更复杂的处理。Zabbix客户端代理(Agent)首先必须从服务器获取监控项列表来进行独立处理,然后它将定期发送新数据给服务。
可以通过选择各自的监控项类型来决定执行主动检测还是被动检测。Zabbix客户端代理(Agent)处理监控项类型为'Zabbix agent' 或 'Zabbix agent (active)'的检测。
2.6 Get
Zabbix_get是一个用来与Zabbix agent通信并从Zabbix agent获取所需信息的程序。这个工具常用来客户端排错。
2.7 Sender
Zabbix_Sender是用于向Zabbix Server发送性能数据进行处理的命令行工具。这个工具常用于执行需要长时间运行的用户脚本并发送可用性及性能数据。
2.8 工作机制 123StartItemTriggerActionEndEvent图:报警流程
为了创建一个采集数据的监控项,你必须首先创建一个主机。只有有了采集数据的监控项,才能根据这个监控项设置触发器。只有有了触发器,才能设置触发器对应的操作。因此,如果你想收到 CPU load it too high on Server X这样的报警,你必须首先为 Server X创建一个主机(Host),然后在主机中创建一个采集CPU load的监控项(item),然后创建一个触发器(trigger)来判断cpu负载是否高了,然后在创建一个操作(action),用于当cpu负载高时发送报警邮件。这看起来是很复杂的,使用模版之后,将完全不是这样的。但是,由于这样的设计,可以进行非常灵活的设置。
12/94