Nagios(返回代码255超出范围)

时间:2009-09-22 18:32:36

标签: nagios

我在http://localhost/nagios

上收到错误(返回代码255超出界限)

但是当我从shell运行命令时,它运行正常

9 个答案:

答案 0 :(得分:5)

如果你正在使用NRPE并且收到'NRPE:无法读取输出'错误,那是因为NRPE守护程序没有返回文本数据。 Nagios核心依赖于NRPE守护进程来返回一个总结检查结果的字符串。例如,对于返回健康状态的检查结果,它可能看起来像前者,而后者则显示不健康状态。

OK - load average: 1.56, 1.37, 1.29 
CRITICAL - load average: 16.59, 19.41, 21.96 

如果NRPE要返回这样的东西:

FOO: bar 

您将获得'NRPE:无法读取输出'错误,因为FOO不是Nagios已知的结果状态之一。通过运行类似的命令运行远程NRPE命令(取决于您的目录和检查):

libexec/check_nrpe -n -H localhost -c check_load

那应该返回OK,WARNING,CRITICAL或UNKNOWN。其他任何事都会导致错误。

答案 1 :(得分:3)

Nagios检查应该返回0, 1, 2 or 3

  • 0:好的
  • 1:警告
  • 2:严重
  • 3:未知

当您手动运行命令时,退出状态255完全有效,因此bash不会抱怨。在命令运行后,您可以在变量$?中检查命令的退出状态:

echo $? 

答案 2 :(得分:2)

对于后人,我会为遇到这种情况的人添加一些东西。 您需要检查两件事:

检查执行检查的服务器是否有权访问正在测试的客户端 在这种情况下,localhost是服务器(和客户端)。然而,客户端上的NRPE需要明确授予服务器检查它的权限。如果您的NRPE由xinetd服务包装,则需要将nagios服务器添加到客户端conf文件(/etc/xinetd.d/nrpe)上的only_from指令

only_from       = 127.0.0.1 NagiosServerHostName

NagiosServerHostName需要位于/ etc / hosts中。或者,放置NagiosServerIP

检查防火墙是否阻止您的检查。默认情况下,NRPE在端口5666上运行;确保允许该端口

答案 3 :(得分:1)

我有这个错误,结果是插件写入了一个无权写入的位置,所以我只是chmod 777那个位置并且有效

答案 4 :(得分:0)

您提到您正在通过nrpe调用check命令。如果您使用返回多行输出的check命令,则必须使用也支持多行输出的最新版本的nrpe,否则check_nrpe脚本将无法解析输出。

答案 5 :(得分:0)

我的猜测是你的check_nrpe命令没有在Nagios配置文件中正确设置。如果在/ usr / local / nagios / etc / objects /中打开Commands.cfg文件,请仔细检查您所拥有的命令设置与您在bash脚本中使用的设置完全相同。我设置的命令是:

define command{
command_name    check_nrpe
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

我的服务定义:

define service{
use         generic-service
host_name       ********
service_description HTTP Requests
contact_groups  localadmin
check_command       check_nrpe!check_vbs_sample
}

此外,我发现使用简单的脚本更容易,例如,只返回OK以便首先测试其工作的批处理脚本。

答案 6 :(得分:0)

正如几张海报所说,如果Nagios没有收到它希望从脚本中得到的响应,它将产生这个错误。

脚本可以通过多种方式生成错误。要找出错误是什么,请更新命令定义,以便将脚本中的标准错误写入日志文件:

command_line $USER1$/check_nrpe -H $ARG1$ -c $ARG2$ 2> /tmp/error.log

答案 7 :(得分:0)

我遇到了同样的错误,它与远程客户端中的防火墙有关。

答案 8 :(得分:0)

希望这会有所帮助,在我看来,这是一个ssh问题。为了解决返回码错误,我以使用nagios的服务器(如果需要,为主节点)的nagios用户身份远程访问了远程服务器。允许从主nagios服务器进入known_hosts文件。