我们已经让我们的服务器上的Nagios运行了一段时间没有任何问题,但最近我们得到了(返回代码141超出界限).
由于我们使用我们的服务上线,服务器上的负载增加了,但它仍然不是很高(平均负载最大值为0.7).在发布之前,Nagios的一切工作正常.
请参阅图片,当前加载返回代码141. 2分钟前,Beancounters VZ已返回141.这种情况不规则.只有HTTP& PING没有返回141,他们不在nrpe上转发.
http://pic-hoster.net/view/45030/ScreenShot2012-05-28at5.31.35PM.png
我注意到如果我从我的Nagios主机执行命令对付有问题的客户端,有时返回会丢失:
root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt APT OK: 0 packages available for upgrade (0 critical updates). root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt APT OK: 0 packages available for upgrade (0 critical updates).
如果我直接在客户端上执行它,就不会发生这种情况.
我做了什么:
>我为这个容器增加了OpenVZ内存和cpuUnit.
>我更新到最新的Nagios 3.4.1(来自源代码)
>我通过nrpe执行Nagios检查localy – 从来没有得到141回来或什么
一个月前我和其他服务器有同样的问题.没有发现问题并重新安装服务器.现在工作.
有想法的人吗?
UPDATE
我想我发现了,一个小时都没发生过.
SIGPIPE是一个很好的提示,我假设系统没有nagios的东西.
我调整了openvz配置和限制.我会报告,如果它保持稳定.
解决方法
我们遇到了类似的问题,其中一个通过容器中的NRPE检查的服务返回了预期的WARNING,然后在几分钟后,相同的服务返回CRITICAL并出现141 / SIGPIPE错误.在下一次检查时,它返回WARNING然后是CRITICAL,然后是WARNING等等.
我为错误执行了流量捕获,发现Nagios issue #305非常准确地描述了我观察到的内容.这似乎是由于在使用SSL(SSL_shutdown())时在NRPE服务器端关闭了一个不干净的连接,这使得它向客户端发送TCP RST,导致读取中止,从而导致SIGPIPE.
将附加到问题报告的补丁nrpe-ssl_shutdown-2.patch应用于NRPE源,重建并重新安装/重新启动它似乎可以阻止问题重复,现在通常会报告警告而没有严重错误.