我正在使用 check_host_alive 命令每分钟向远程位置的所有路由器发送 5 个数据包。我今天注意到我收到了 AT&T 全球客户支持中心的通知,说路由器已关闭(发送这些通知可能需要 5-30 分钟),但从未收到 Nagios 的通知。我登录 Nagios,它显示主机处于活动状态,延迟为 0ms。这告诉我它看到了数据中心路由器的自动响应,即“TTL 在传输中过期”,这是来自远程路由器的回复。我有什么办法可以告诉 nagios 检查回复来自哪里?我觉得其他人也一定遇到过这个问题……我用 check_ping 命令测试了它,它产生了相同的结果。我已将命令定义为 %hostname% 和主机定义中的正确 IP,它可以很好地告诉我延迟很高。欢迎提出任何想法,我已经运用了我的 Google 技能,但没有结果。
编辑:
root@IM-UBTU:/# /usr/local/nagios/libexec/check_ping -H 192.168.250.1 -w 100.0,10% -c 200.0,20% -vvv
CMD: /bin/ping -n -U -w 10 -c 5 192.168.250.1
Output: PING 192.168.250.1 (192.168.250.1) 56(84) bytes of data.
Output: From 10.69.10.2 icmp_seq=1 Time to live exceeded
它知道有问题,为什么不给我警告?
答案1
因为没有任何答案,所以我想尝试在这里提供一个解决方案。
最好的选择是使用不同的服务检查您想要的内容,不幸的是我对编程了解不够多,无法提供修改后的 check_ping 插件。
另一种方法是将检查更改为 telnet 或 ssh 之类的方法,虽然不理想,但可以比 ping 提供更好的响应。
有关如何更改此设置,请参阅我的帖子: 更改 Nagios 判断服务器是否离线的方式?
答案2
您可以在 ping 语法中在所有开关之后、指定目标主机之前指定跳数。我对我的网络做了一个小测试,似乎如果跳数不可到达,您将不会收到任何回复。
这似乎是 check_ping 中的一个相当大的缺陷,你应该将其报告为一个错误。