目录

一、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的工作模式可以分为:

  1. 主动模式active
  2. 被动模式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. 被动模式的工作流程

  1. Zabbix-Server打开一个TCP连接。
  2. Zabbix-Server发送一个key为agent.ping\n的请求。
  3. Zabbix-Agent接受这个请求,然后响应数据<HEADER><DATALEN>。
  4. Zabbix-Server对接收到的数据进行处理。
  5. Zabbix-Server对接收到的数据进行处理。

3.2. 主动模式的工作流程

3.2.1 Zabbix-Agent主动向Zabbix-Server发送请求的工作流程

        在主动模式中,Zabbix-Agent在启动时就会向Zabbix-Server发送请求,以获取需要主动监控的监控项。这部分的运行流程总结如下:

  1. Zabbix-Agent向Zabbix-Server建立一个TCP连接。
  2. Zabbix-Agent请求需要检测的数据列表。
  3. Zabbix-Server响应Zabbix-Agent,发送一个Item列表(Item key、Delay)。
  4. Zabbix-Agent响应请求。
  5. 完成本次会话后关闭TCP连接。
  6. Zabbix-Agent开始周期性地采集数据。

3.2.2 Zabbix-Agent发送数据给Zabbix-Server的工作流程

        当Zabbix-Agent将监控项数据采集完成之后,会将数据发送给Zabbix-Server。这部分的运行流程总结如下:

  1. Zabbix-Agent向Zabbix-Server建立一个TCP连接。
  2. Zabbix-Agent将数据发送给Zabbix-Server,其发送周期等于Item的更新周期。
  3. Zabbix-Server处理Zabbix-Agent发送的数据。
  4. 关闭TCP连接。