今天看师傅给我发的文档(zabbix的----zabbix企业级分布式系统.pdf),再结合着项目的代码,学习zabbix,有些许感慨啊。
当初老大在会上讲采集器采集数据,提到要用trapper,主动监控模式来采集软件指标。那时候听得云里雾里,什么都不懂,会后查资料知道trapper是zabbix的一种监控模式,网上也降了很多关于zabbix主动监控的原理,可理解还是不是很深入。可是这几天看看同事写的代码,再结合资料文档,再次看trapper,忽然有种豁然开朗的感觉,终于明白了trapper这中监控模式,也理解了项目中关于zabbix采集器的代码是什么意思。
现在再分析一下zabbix的trapper主动监控模式。
原理:
(1)建立tcp连接
(2)agent向server发送请求(要知道自己采集什么数据)
(3)server响应请求(将items列表发送给agent)
(4)agent响应请求
(5)关闭tcp连接
(5)周期性地向server发送数据。
发送数据的流程:
1、agent向server发送tcp请求
2、agent将自己采集的数据发送给server
3、server接收数据,并对数据进行处理。
在项目中采集器要完成(1)采集软件指标,(2)将数据传给server。
由ZabbixSend(已经封装好了)完成。前提是server已经知道了agent将要想它传递什么数据。(应该是在创建采集器item时指定了)
本项目中,主动模式下,zabbix server得到的数据并不是通过trigger运行zabbix命令得来的,而是由agent自己获得server需要的数据,然后传给server(但还是由trigger调用相关执行脚本的命令,来获得agent主动取的的数据),可以理解成:zabbix有些数据用命令监控不到,所以要用通过调用脚本的方式,来获得数据。