Zabbix Agent 监听端口相关问题

引言

在 CMDB 中查看新配置的机器的监控,发现没有,正常应该是自动添加上的。
于是叫运维开发一起看下。

Telnet 测试 Zabbix Agent 端口连通性


telnet 101.198.x.x 10050
Trying 101.198.x.x...
Connected to 101.198.x.x.
Escape character is '^]'.
Connection closed by foreign host.

从上面的 telnet 命令输出可以看出,Zabbix Agent 端口是开启的,因为已经Connected。 但最后的Connection closed by foreign host.说明 Zabbix Agent 主动关闭了此次连接。

执行上面的命令后,echo $?, $?为 1。

运维开发这样说:


其他我不知道,代码里面,只判断退出码为 1,具体取数据那是 Zabbix 的事  
问题很清楚,就是因为 telnet 退出码为 1  
其他的不需要考虑的  

这样看来,运维开发的自动加 Zabbix 的程序是这样的判断逻辑。 这个判断逻辑有问题,上面的输出说明 Zabbix Agent 监听端口是正常的,最后主动关闭连接$?返回为 1,这是 Zabbix Agent 的一个处理机制。
在 Zabbix Agent 的配置文件中有个 Server 参数,只有在里面的 Zabbix Server telnet Zabbix Agent 才不会被 Zabbix Agent 主动关闭返回 1。

至此,原因就比较清楚了:运维开发的自动添加 Zabbix 监控的程序判断 Zabbix Agent 是否存活的机制有问题。

运维开发修改程序后,就正常自动加上监控了。

Ref

telnet - “Connection closed by foreign host”
Zabbix Agent 配置文件说明