Zabbix 主动与被动模式

1、主动和被动模式工作原理

图片[1]-Zabbix 主动与被动模式-李佳程的个人主页

Zabbix 监控流程中 Agent 收集数据分为主动和被动两种模式

主动模式和被动模式都是相对 zabbix agent而言的

Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次

主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式只需要发送一次数据,大大提高了传输效率。

  • 被动模式:Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个监控项,则需要100次交互。
  • 主动模式:Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy,如有100个监控项,只需要1次交互即可。

注意:两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式。

被动监测通信过程

Server打开一个TCP连接
Server发送请求agent.ping
Agent接收到请求并且响应<HEADER><DATALEN>
Server处理接收到的数据
关闭TCP连接
被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很多
端口,就会出现server端性能瓶颈问题。

主动模式监测通信过程

zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据
值给server或者proxy。

zabbix多久获取一次active items?
它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重
试。

主动模式的流程分两个部分

  • 获取ACTIVE ITEMS列表
Agent主动打开一个TCP连接(主动检测变成Agent打开)
Agent请求items检测列表
Server返回items列表
Agent 处理响应
关闭TCP连接
Agent开始收集数据
  • 主动检测提交数据过程
Agent建立TCP连接
Agent批量提交items列表收集的所有监控项数据
Server处理数据,并返回响应状态
关闭TCP连接

2、被动模式

被动模式是指 zabbix agent 被动的接受zabbix server(或者Zabbix Proxy)周期性发送过来的数据收集指令。

在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050端口发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送指令,zabbix agent就什么时候采集,zabbix server不发送指令,zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。

被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的 负载,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载过高还会导致不能及时获取到最新数据。

被动模式因为性能的原因,一台 Zabbix Server 一般只能监控500台以下的主机,更多的主机建议使用主动模式。

# Zabbix Server 通过Poller进程实现被动模式
root@zabbix-server:~# grep StartPollers /etc/zabbix/zabbix_server.conf
# 此数量可以适当进行调整
# StartPollers=5
图片[2]-Zabbix 主动与被动模式-李佳程的个人主页

范例:查看被动模式下 Zabbix agent 进程和端口打开情况

[root@zabbix-agent ~]# grep StartAgents /apps/zabbix_agent/conf/zabbix_agentd.conf
# 被动模式的进程数量,默认为3个,可以适当修改
# StartAgents=3
图片[3]-Zabbix 主动与被动模式-李佳程的个人主页
图片[4]-Zabbix 主动与被动模式-李佳程的个人主页

3、主动模式

3.1、主动模式介绍

主动模式是由每个zabbix agent 打开本机的随机端口,主动向 Zabbix Server (或者Zabbix Proxy)的10051端口发起tcp连接请求。

主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻了zabbix server的压力。经过优化后可以轻松监控2000台,甚至5000以上的主机。

以下场景下生产推荐使用主动模式

  • Zabbix Server 出现性能瓶颈,监控队列出现大量延迟的监控项,告警不及时
  • 监控主机超过 500 台以上

3.2、Zabbix Agent 实现主动模式

在Zabbix Agent实现主动模式流程

  • 在 Zabbix Agent 配置主机模式相关配置
  • 在 Zabbix Server 创建配置有主动模式监控项的模板
  • 关联主动模板至支持主动模式的 Agent 主机

注意:基于原被动模板克隆生成的主动模式模板,不是所有监控项都能改为主动模式,比如agent.ping 监控项如果改为主动模式,ZBX 提示将无法变绿。

在 Zabbix Agent 配置主动模式

Zabbix Server 主动和被动模式无需配置即可支持,还可以支持多个主动和被动模式的Zabbix Agent 同时存在。

Zabbix Server 通过 trapper 进程实现主动模式

root@zabbix-server:~# grep StartTrappers /etc/zabbix/zabbix_server.conf
# 进程数可以适当调整
# StartTrappers=5
图片[5]-Zabbix 主动与被动模式-李佳程的个人主页

Zabbix Agent 默认是被动模式,需要修改配置才能支持主动模式

Zabbix Agent 的关健配置有下面三项

Server=<Zabbix Server>          #被动模式指向 Zabbix Server的IP或FQDN,默认模式
ServerActive=<Zabbix Server>    #主动模式指向 Zabbix Server的IP或FQDN
Hostname=<当前主机IP>       #当前主机的IP,此项必须和Zabbix Server中设置的主机名称相同

范例:Zabbix Agent配置主动模式配置

[root@zabbix-agent ~]# grep '^[^#]' /apps/zabbix_agent/conf/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
AllowKey=system.run[*]
AllowRoot=1
Server=192.168.1.121
ServerActive=192.168.1.121
Hostname=192.168.1.122
Timeout=30                                                 # 建议修改
Include=/apps/zabbix_agent/conf/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1

[root@zabbix-agent ~]# systemctl restart zabbix-agent.service 
图片[6]-Zabbix 主动与被动模式-李佳程的个人主页

Zabbix agent主动模式对应的进程数量只有1个,不能调整

Zabbix agent被动模式对应的进程数量默认3个,可以调整

图片[7]-Zabbix 主动与被动模式-李佳程的个人主页
图片[8]-Zabbix 主动与被动模式-李佳程的个人主页

基于现有模板将包含的监控项修改为主动模式的监控项

注意:Zabbix 5.0 内置了主动模式的模板 Template OS Linux by Zabbix agent active 无需修改

Zabbix4.0 之前没有主动模式的模板,需要自行修改

图片[9]-Zabbix 主动与被动模式-李佳程的个人主页

将主动模板关联到需要监控的主机

图片[10]-Zabbix 主动与被动模式-李佳程的个人主页
图片[11]-Zabbix 主动与被动模式-李佳程的个人主页

验证结果和查看日志

图片[12]-Zabbix 主动与被动模式-李佳程的个人主页

打开日志debug的功能

[root@zabbix-agent ~]# vim /apps/zabbix_agent/conf/zabbix_agentd.conf
# 修改为4
DebugLevel=4

[root@zabbix-agent ~]# systemctl restart zabbix-agent.service 
图片[13]-Zabbix 主动与被动模式-李佳程的个人主页

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享