引言
在 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 配置文件说明