【问题标题】:Nagios (Return code of 255 is out of bounds)Nagios(返回码 255 超出范围)
【发布时间】:2009-09-22 18:32:36
【问题描述】:

我在http://localhost/nagios 上收到错误(返回码 255 超出范围)

但是当我从 shell 运行命令时,它运行良好

【问题讨论】:

  • 你运行的是什么版本的 Nagios?
  • Google 快速发现错误 255 是 Nagios 在写入日志文件时未检查 fclose():markmail.org/message/…
  • 我正在运行 Nagios 版本 3.2.0,谢谢
  • 你在运行什么命令? nagios 日志中有什么有用的吗?

标签: nagios


【解决方案1】:

如果您使用 NRPE 并收到 'NRPE: Unable to read output' 错误,那是因为 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。其他任何事情都会导致该错误。

【讨论】:

  • 您可能应该在 Nagios 服务器上运行 check_nrpe 命令并指定运行相关服务的外部主机。
【解决方案2】:

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

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

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

echo $? 

【讨论】:

  • 什么时候回显 $?我得了零。但正如我所提到的,我看到 NRPE:无法读取 nagios 网页上的输出问候
【解决方案3】:

为了后代,我会为遇到此问题的任何人添加一些东西。 您需要检查两件事:

检查执行检查的服务器是否有权访问它正在测试的客户端 在这种情况下,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 端口上运行;确保允许该端口

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      我遇到了这个错误,原来插件写入了一个它无权写入的位置,所以我只是 chmod 777 那个位置并且它工作了

      【讨论】:

      • chmod 777 在 99.9% 的情况下不是一个理智的解决方案。
      【解决方案6】:

      我的猜测是您的 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 以首先测试它的工作。

      【讨论】:

        【解决方案7】:

        正如几位发帖者所说,如果 Nagios 没有从脚本中收到预期的响应,它将生成此错误。

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

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            希望这会有所帮助,就我而言,问题是 ssh 问题。为了解决返回码错误,我以 nagios 用户身份从正在使用 nagios 的服务器(如果您愿意,可以使用主节点)远程访问远程服务器。允许从主 nagios 服务器进入 known_hosts 文件。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-20
              • 2014-10-15
              • 1970-01-01
              • 1970-01-01
              • 2021-07-05
              • 2016-04-24
              • 1970-01-01
              相关资源
              最近更新 更多