Zabbix Agent数据接收异常:两类连接错误的差异及排查方案咨询
您好,我碰到了一个Zabbix监控的问题:我有多台主机已经安装了Zabbix Agent、配置了Zabbix Proxy,并且操作系统防火墙也开放了10050-10051端口,但仍然收到「Zabbix agent is not available」的错误提示。
错误提示界面:
当我把鼠标悬停在错误上时,不同主机出现了两类不同的具体错误:
- 第一类错误:
Get value from agent failed: cannot connect to [[IP ADDRESS OF THE COMPUTER]:10050]: [111] Connection refused
- 第二类错误:
Get value from agent failed: cannot connect to [[IP ADDRESS OF THE COMPUTER]:10050]: [4] Interrupted system call
想请教一下这两类错误的区别是什么?我们可以从哪些方面入手排查解决呢?非常感谢!
两类错误的核心差异
1. [111] Connection refused(连接被拒绝)
这个错误是最常见的网络连接问题,本质是Zabbix Proxy/Server发起的连接请求直接被目标主机拒绝了。通常意味着目标主机的10050端口根本没有服务在监听,或者有中间设备(比如硬件防火墙)直接阻断了连接。
2. [4] Interrupted system call(系统调用中断)
这个错误相对少见,它表示Zabbix Proxy/Server在尝试和Agent建立连接、或者读取数据的过程中,系统调用被外部信号打断了。可能是Proxy/Server自身的进程被中断,也可能是网络连接在建立过程中出现了异常中断(比如网络闪断、目标主机突然重启),或者是系统资源限制导致的调用中断。
分步排查方案
针对「Connection refused」的排查步骤
第一步:确认目标主机的Zabbix Agent是否在运行
在目标主机上执行命令:systemctl status zabbix-agent(Systemd系统)或者service zabbix-agent status(SysVinit系统),检查Agent进程是否处于活跃状态。如果进程没运行,启动它:systemctl start zabbix-agent。第二步:检查Agent的监听配置
查看Zabbix Agent配置文件zabbix_agentd.conf,确认ListenIP参数是否设置正确(如果设置了特定IP,要确保Proxy/Server能访问到这个IP),ListenPort是否为10050。然后重启Agent生效:systemctl restart zabbix-agent。第三步:验证端口监听状态
在目标主机上执行ss -tulpn | grep 10050或者netstat -tulpn | grep 10050,确认10050端口是否被zabbix_agentd进程监听。如果没有监听,说明Agent配置有问题或者启动失败,查看Agent日志/var/log/zabbix/zabbix_agentd.log找错误信息。第四步:排查网络通路
在Zabbix Proxy所在主机上,用telnet [目标IP] 10050或者nc -zv [目标IP] 10050测试连接。如果连接失败,要检查:- 目标主机的操作系统防火墙是否真的开放了10050端口(可以临时关闭防火墙测试)
- 中间的硬件防火墙、路由器是否有阻断10050端口的规则
- 目标主机的SELinux/AppArmor等安全模块是否拦截了连接
针对「Interrupted system call」的排查步骤
第一步:检查Zabbix Proxy的状态和日志
查看Proxy的运行状态:systemctl status zabbix-proxy,确认Proxy进程是否稳定,有没有频繁重启的情况。然后查看Proxy日志/var/log/zabbix/zabbix_proxy.log,找是否有资源不足、进程被信号终止的相关信息。第二步:排查网络稳定性
这类错误常和网络波动有关,可以在Proxy和目标主机之间做持续的ping测试:ping -t [目标IP](Windows)或者ping -i 0.5 [目标IP](Linux),观察是否有丢包情况。也可以用mtr [目标IP]查看网络路径的丢包情况。第三步:检查系统资源限制
查看Proxy所在主机的CPU、内存、磁盘IO使用情况:top、iostat、df -h,确认是否有资源耗尽的情况。另外,检查系统的进程文件描述符限制:ulimit -n,如果数值过低,可能导致Proxy无法建立足够的连接,需要调整限制。第四步:测试目标Agent的可用性
即使出现这个错误,也可以先按照「Connection refused」的前几步,确认目标Agent是否正常运行、端口是否监听,排除基础的Agent故障。
通用排查建议
不管是哪类错误,都建议先查看Zabbix Agent和Proxy的日志文件,日志里会有更详细的错误细节,是排查问题的核心依据。另外,如果是批量主机出现问题,要检查是否有统一的配置变更(比如Agent升级、防火墙规则批量修改)导致的故障。
备注:内容来源于stack exchange,提问作者david sierra fernandez







