作为一个大型综合体的一部分,这是一座拥有 4 台计算机的小型办公楼。它有一条 cat5 线连接到一个非托管交换机,该交换机上连接了 4 台计算机。
由于我无法 ping 交换机,因此我唯一能判断网络是否正常的方法就是 ping 计算机。但办公室里的女士们往往会在节假日、周末、心情不好的时候等关闭计算机。99% 的时间里,至少有一台计算机处于开启状态。
我想要做的是让 Nagios 仅在所有 4 台计算机都丢失时发送通知。也就是说,交换机坏了或者 FSB(光纤寻址反铲)在该区域发生了一些问题。从我读到的内容来看,我认为 Nagios 主机检查依赖项不会这样做。
还有其他方法可以做到这一点吗?
答案1
编写自己的小插件来完成这个任务应该不会太难,因为简单的测试插件很容易编写,它们所要做的就是返回一个退出代码和一行 nagios 解释的文本(查看文档)。
编辑:我有一分钟的时间,所以这里有一个关于如何进行这样的测试的非常简单的例子:
#!/bin/bash
ping -c 3 host1 > /dev/null
if [ "$?" -eq "0" ]; then
echo "OK - answer from host1"
exit 0
fi
ping -c 3 host2 > /dev/null
if [ "$?" -eq "0" ]; then
echo "OK - answer from host2"
exit 0
fi
echo "Fail - no host answers"
exit 2
这将简单地向主机发送三个 ping,如果主机应答则以返回值 0 退出,如果无法到达则最后以值 2 退出。
答案2
那么,四台机器组成一个集群,不是吗?参见http://nagios.sourceforge.net/docs/nagioscore/3/en/clusters.html在文档中指示如何创建“OR”检查;仅在发生几种情况时才通知的检查。