目录
一、Zabbix-agent的工作模式
二、zabbix-agent的工作原理
2.1. 主动模式工作原理
2.2. 被动模式工作原理
2.3. 主动模式和被动模式可以共存
2.4. Zabbix_agentd.conf参数配置
三、zabbix-agent的工作流程
3.1. 被动模式的工作流程
3.2. 主动模式的工作流程
3.2.1 Zabbix-Agent主动向Zabbix-Server发送请求的工作流程
3.2.2 Zabbix-Agent发送数据给Zabbix-Server的工作流程
一、Zabbix-agent的工作模式
Zabbix-agent的工作模式可以分为:
- 主动模式active
- 被动模式passive
二、zabbix-agent的工作原理
2.1. 主动模式工作原理
主动模式是指Zabbix-Agent将采集到的数据主动推送给Zabbix-Server,其行为是Zabbix-Agent向Zabbix-Server主动发起的数据连接过程,Zabbix-Server不必等待Zabbix-Agent的数据采集行为,Zabbix-Agent能够一次批量发送多条数据给Zabbix-Server,属于一对多的响应模式,对Zabbix-Server的性能开销较少,适合大规模环境使用。
2.2. 被动模式工作原理
被动模式是指Zabbix-Server向Zabbix-Agent请求数据,Zabbix-Agent被动接受数据请求后进行回应,属于一对一的响应模式。
比如有100个监控项,Zabbix-Server需要向Zabbix-Agent请求100次,同时,Zabbix-Agent在响应Zabbix-Server时,对监控项数据采集也需要消耗时间,此时,Zabbix-Server只能耗着时间安静地等待Zabbix-Agent。
相对于主动模式的高效,被动模式从时间开销和发送数据量上都处于劣势,对Zabbix-Server的性能开销较大,适合小规模环境使用。
2.3. 主动模式和被动模式可以共存
主动模式和被动模式在同一个Zabbix-Agent上,是可以共存的,比如让一部分监控项处于被动模式,另一部分处于主动模式。
处于主动模式的监控项,由Zabbix-Agent周期性地采集数据传输给Zabbix-Server;
处于被动模式的监控项,则由Zabbix-Server周期性地从Zabbix-Agent获取数据。
2.4. Zabbix_agentd.conf参数配置
Server=127.0.0.1
#被动模式连接的Zabbix-Server的IP地址。
ServerActive=127.0.0.1
#主动模式连接的Zabbix-Server的IP地址,开启此项参数,将会自动打开主动模式;将其注释掉,则会关闭主动模式
Hostname=Host-001
#在主动模式中,Hostname作为Zabbix-Server处理数据的唯一依据,要求Hostname在Zabbix-Server中具有唯一性。当有多个Zabbix-Agent的主机名配置相同时,会造成该主机名下的主动模式监控项数据存储错乱,因为在不同的时间周期内,其存储的是不同Zabbix-Agent的数据。
StartAgents=3 #Agent的进程个数,用于被动模式,如果大于0,则会监听10050端口。如果只需要主动模式,则可以将其设置为0,将被动模式关闭。
三、zabbix-agent的工作流程
3.1. 被动模式的工作流程
- Zabbix-Server打开一个TCP连接。
- Zabbix-Server发送一个key为agent.ping\n的请求。
- Zabbix-Agent接受这个请求,然后响应数据<HEADER><DATALEN>。
- Zabbix-Server对接收到的数据进行处理。
- Zabbix-Server对接收到的数据进行处理。
3.2. 主动模式的工作流程
3.2.1 Zabbix-Agent主动向Zabbix-Server发送请求的工作流程
在主动模式中,Zabbix-Agent在启动时就会向Zabbix-Server发送请求,以获取需要主动监控的监控项。这部分的运行流程总结如下:
- Zabbix-Agent向Zabbix-Server建立一个TCP连接。
- Zabbix-Agent请求需要检测的数据列表。
- Zabbix-Server响应Zabbix-Agent,发送一个Item列表(Item key、Delay)。
- Zabbix-Agent响应请求。
- 完成本次会话后关闭TCP连接。
- Zabbix-Agent开始周期性地采集数据。
3.2.2 Zabbix-Agent发送数据给Zabbix-Server的工作流程
当Zabbix-Agent将监控项数据采集完成之后,会将数据发送给Zabbix-Server。这部分的运行流程总结如下:
- Zabbix-Agent向Zabbix-Server建立一个TCP连接。
- Zabbix-Agent将数据发送给Zabbix-Server,其发送周期等于Item的更新周期。
- Zabbix-Server处理Zabbix-Agent发送的数据。
- 关闭TCP连接。