记录一下那天晚上的排查过程。Zabbix 6.0 的 server 在 10.0.0.5,agent 装在 10.0.0.11 的 CentOS 7 上,前端主机可用性一直是红,报 Get value from agent failed: ZBX_TCP_READ() timed out,可 telnet 10050 是通的。

原因不止一个,得分开看。agent 配置里 Server 只写了 127.0.0.1,server 发来的被动检查直接被拒。还有一种是ServerActive 没写 server 地址,主动模式采集全部发不出去。

少数情况下是agent 是 4.0 版本配 6.0 的 server,协议字段对不上,返回空响应。

从 server 侧直接探一次

zabbix_get -s 10.0.0.11 -k agent.ping

随后核对 agent 的三个关键参数

grep -E '^(Server|ServerActive|ListenPort)=' /etc/zabbix/zabbix_agentd.conf

然后放通 10050 并重载防火墙

firewall-cmd --permanent --add-port=10050/tcp && firewall-cmd --reload

等前面都确认过,再重启并看 agent 日志

systemctl restart zabbix-agent && tail -n 30 /var/log/zabbix/zabbix_agentd.log

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

这台环境是别人交接的,不少默认值被动过,只能一项项核。

别只看报错消失,验证要多做一步。zabbix_get 返回 1,前端主机可用性变绿,Latest data 里 agent.ping 每 30 秒有新值,10050 的监听地址是 0.0.0.0 而不是 127.0.0.1。

提醒一点。版本跨度别超过一个大版本,agent 4 配 server 6 能连上但采集全是空值;Server 和 ServerActive 是两套模式,模板用哪种就得配对。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189