「Zabbix」- 主动模式(Active checks)与被动模式(Passive checks)

  CREATED BY JENKINSBOT

主动模式(Active checks)与被动模式(Passive checks)

(1)“主动模式(Active checks)”与“被动模式(Passive checks)”是相对于 AGENT 来说的,即“由 zabbix agent 主动检查”或“有 zabbix agent 被要求检查”。(2)监控项目是主动检查还是被动检查则在 zabbix server 中定义,在 zabbix agent 中并没有定义监控项。

被动模式

首先由 zabbix server 发起请求,根据 zabbix server 请求,再由 zabbix agent 在主机中获取目标数据。

在 zabbix server 中的 poller 进程连接 zabbix agent 服务,并等待数据返回,然后关闭连接。

主动模式

首先由 zabbix agent 从 zabbix server 获取检索项目,然后 zabbix agent 周期性向 zabbix server 发送数据。

在 zabbix agent 中,默认间隔两分钟连接 zabbix server 的 trapper 端口,以获取检测指标。zabbix agent 根据检测指标获取数据并处理,处理之后将数据发送给 zabbix server。

应该使用主动模式还是被动模式?

只能使用被动模式的场景

在特殊场景中,比如 Zabbix 部署于内网,而被监控主机位于外网,此时只能使用被动模式(也有其他“繁琐的”解决办法)。或者网络访问有特殊要求(不能进只能出),也只能使用主动模式。

远程命令(Remote Command)特性只能在被动模式下使用。在主动模式下,zabbix agent 只负责收集数据,不受 zabbix server 管控,也不知道何种状态属于故障,因此无法执行远程命令。

两者性能对比

在被动模式中,zabbix server poller 连接 zabbix agent,在数据返回后再关闭连接。可以在配置文件中指定超时时间,以及使用 time zabbix_get 命令测试命令执行时间。

在被动模式中,(1)如果 UserParameter 执行时间较长,则 zabbix server poller 将无法处理其他监控项,需要在配置文件中增加 poller 的数量。(2)同样如果 zabbix agent 处理某个 UserParameter 时间过长,将无法处理其他监控项,需要在配置文件中增加 zabbix agent 进程数量。(3)执行时间过长将导致性能下降,但是有时又没有其他办法。

在主动模式中,就不会具有上述缺点,因为数据有 zabbix agent 处理并发送,无需 zabbix server poller 进行等待。

在主动模式中,zabbix agent 只能有一个用于处理监控项的进程,无法增加主动检查进程的数量。如果脚本执行时间过长,只能等待或者切换为被动模式。

总的来说,(1)对于某些快速检查(耗时短),主动模式性能更好,但是不能执行远程命令。(2)对于某些耗时较长的任务,可以使用被动模式,但是要增加进程数量。(3)另外,在主动模式下 zabbix agent 会使用缓冲,如果出现网络问题将导致数据丢失。而被动模式则不会使用缓冲。

参考文献

Zabbix Agent: Active vs. Passive