首页 » Monitor » Zabbix » Zabbix主动模式与被动模式

Zabbix主动模式与被动模式

 
文章目录

关于Zabbix的相关文章,吴昊博客中提供了很多的教程,但从未提及Zabbix的工作模式。实际上,Zabbix Agent(代理)与Server(服务器)之间的数据采集存在两种工作模式:被动模式(Passive Mode)和主动模式(Active Mode)。虽然大多数教程默认采用被动模式进行配置说明,但理解这两种模式的差异对实际部署至关重要。本文将系统阐述它们的运作机制、优缺点等。

被动模式(Passive Mode)

目前绝大多数的Zabbix文章都是基于被动模式来写的,这也是Zabbix监控默认采用的模式。由Zabbix-Server定期向Zabbix-Agent发起请求获取监控数据,适合Server端能直接访问Agent端的内网环境。

工作流程

Server发起请求:Zabbix-Server(或Proxy)主动向被监控主机上的Zabbix-Agent发起连接。
Agent响应数据: Agent接收到Server的请求后,执行请求中指定的监控项(Item)的数据收集命令。
Agent返回数据: Agent将收集到的数据返回给发起请求的Server。

被动模式下的通信示意

Zabbix-server说: "Agent, 请告诉我主机A的CPU使用率!"
Zabbix-agent说: "好的,马上执行命令... 主机A的CPU使用率是25%。"

关键配置项(Agent端 - zabbix_agentd.conf)

Server=127.0.0.1,10.10.10.10,192.168.180.11:允许哪些Zabbix-Server(或Proxy)IP连接本Agent请求数据,多个IP地址通过逗号分隔。
ListenPort=10050:Agent监听的端口(默认10050),Zabbix-Server需请求Zabbix-Agent的这个监听端口,在Zabbix-Agent上需放行该端口。

优点

配置简单直观: Server端集中管理数据拉取逻辑,Agent配置简单。
Server控制力强: Server完全掌控何时、以何种频率获取Agent的数据。
便于调试: 在Server端可以方便地测试Agent是否能响应请求(使用zabbix_get命令)。

缺点

Server负担重: 当监控主机数量庞大时,Server需要维护大量到Agent的并发连接,进行轮询请求,对Server的CPU、内存、网络带宽和连接数压力巨大,会导致数据延迟。

主动模式(Active Mode)

对于主动模式来说,对于数据的处理更为复杂,由Zabbix-agent主动向Zabbix-server请求监控项列表并上报数据,适合大规模监控或Agent端位于防火墙NAT后的场景。

工作流程

Agent主动连接: Zabbix-Agent定期(由RefreshActiveChecks参数控制)主动连接到Zabbix-Server(或Proxy)的特定端口(默认10051)。
Agent获取监控项列表: Agent向Server请求:“我需要为主机Hostname收集哪些监控项?”。
Server下发监控项列表: Server根据配置中的监控项,告诉该主机需要Agent执行的所有主动类型的监控项列表(包括Key、更新间隔等)。
Agent收集并上报数据: Agent根据Server提供的监控项列表,独立地在本地按指定间隔执行监控项的数据收集。收集完成后,Agent再次主动连接到Server,将批量收集到的数据上报上去。

主动模式下的通信示意

Zabbix-Agent说: "Server你好,我是主机A的Agent,我应该收集哪些数据?"
Zabbix-Server说: "这是你的任务清单:每30秒收集一次CPU使用率。"
Zabbix-Agent说: "收到!... (30秒后) CPU:25%... 现在上报数据!"

关键配置项(Agent端 - zabbix_agentd.conf)

ServerActive=10.10.10.9:10051: 指定主动上报的目标Zabbix-Server(或Proxy)的IP和端口(默认10051)。多个IP地址通过逗号分隔。Zabbix-Agent需请求Zabbix-Server的端口(默认10051),在Zabbix-Server上需放行该端口。
Hostname=Zabbix001: 重要参数,这个配置必须与Zabbix-Server仪表盘中创建的主机(Host)名称必须完全一致。Agent使用此名称向Server标识自己并请求对应的监控项列表,这是两端通信的主要标识。
RefreshActiveChecks=120: Agent多久(秒)向Server请求一次监控项列表的刷新(默认120秒)。即使列表未变,也会连接确认。
StartAgents=0:单纯使用主动模式的情况下,可以配置该参数,关闭被动监听端口。

优点

减轻Server负担: Server不再需要主动连接成千上万的Agent,只需开启监听一个端口(默认10051)接收Agent的连接和数据上报。连接建立和数据传输主要由Agent发起,Server主要处理数据接收和存储,并发压力大大降低,具有可扩展性。
防火墙: 只需要确保所有Agent能够访问Server的IP和ServerActive端口(默认10051)。只需在Server的防火墙上开放10051端口即可,Agent端无需开放10050端口(除非仍需被动检查)。这在非内网环境、云环境或安全策略严格的场景中优势明显。

缺点

调试复杂度:主动模式的问题排查需同时检查Agent日志(如监控项列表获取是否成功)和Server日志(如数据接收是否正常),比被动模式(直接用zabbix_get测试)更复杂。

总结

Zabbix的被动模式由Server主导拉取数据,适用于内网小规模部署场景;主动模式由Agent主导上报数据,适用于监控主机数量庞大(数百台以上,尤其是数千、数万台)。当然也可将两种模式混合使用(同时开启)。总之无论使用哪种模式,都必须保证时间的一致性,时间不同步,将会导致监控数据的时间轴混乱等。

原文链接:Zabbix主动模式与被动模式,转载请注明来源!

0