好的,情况是这样的,我目前使用两个分布式 nagios 监控服务器和 70 多个受监控主机。每个主机都通过 nrpe 插件进行监控,每个主机都具有完全相同的软件/硬件配置。Nrpe 在 Centos 5.4 上作为 xinetd 服务运行 Nrpe 版本为:2.12(服务器和受监控主机)Nagios 插件为:1.4.14
所有 nrpe 检查间隔为 5 分钟
最后进入的几个主机偶尔会用监控的nrpe服务显示“服务检查超时”。
那么到目前为止我做了什么:
我围绕这些服务编写了一些额外的包装脚本来尝试找到错误源,并尝试在 nagios 服务器和 nrpe 服务器上进行调试。
从调试来看,以下操作肯定有效:
主机之间的网络连接 两台主机/服务器上的 Nrpe 端口均已打开 不存在任何网络超时
Nrpe 检查已正确调用,插件也正常工作。我甚至编写了一个记录器脚本,用于记录插件执行开始时的日期和时间,以及通过 nrpe 调用插件时的输出。执行时间从不超过 2 秒
nrpe.conf 设置为等待命令输出60秒,监控服务器上的Nrpe插件设置为等待至少30秒才能输出(即使它会抛出完全不同的错误)。
无论如何,这让我得出结论,受监控主机上的 nrpe 守护进程出了问题。即使插件返回了检查数据,nrpe 也未获取到。
我甚至删除了运行 nrpe 守护进程的 nagios 用户的所有 shell ulimits 来消除这个问题,但这没有帮助。
无论如何,非常感谢任何帮助。
答案1
好的,我终于让它工作了。
问题在于,两个 Nagios 服务器都在执行服务检查并将结果报告给主节点,并且所有这些检查都完美执行。主节点具有服务新鲜度检查,因此如果监控服务器无法完成检查,主服务器将自行安排这些检查。
无论如何,新的服务器位于新的 IP 范围内,并且默认情况下主服务器上的 nrpe 端口是关闭的。
打开端口解决了问题。虽然它返回的是“服务检查超时”而不是“套接字超时错误”,这仍然很奇怪。