【问题标题】:Nagios: Return code of 7 is out of boundsNagios:返回码 7 超出范围
【发布时间】:2018-12-03 10:47:52
【问题描述】:

服务已在远程节点上启动并运行。 CLI 执行返回 OK,但在 UI 中返回带有状态信息的 CRITICAL:'返回代码 7 超出范围'

nagios-xxxxxxxx:~# /usr/lib/nagios/plugins/check_tcp -H hostname -p <port> -w 5 -c 10 -t 60

TCP OK - 0.002 second response time on hostname port XXXXXXX|time=0.001642s;5.000000;10.000000;0.000000;60.000000

有人可以帮我解决吗?

Nagios 日志:

[XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host was out of bounds. [XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host was out of bounds. [XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host was out of bounds. [XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host was out of bounds. [XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host was out of bounds.

【问题讨论】:

  • 在官方论坛试试这个解决方案:support.nagios.com/forum/viewtopic.php?f=7&t=43810#p220778
  • @Rohlik 感谢您的 cmets。我尝试使用页面上提供的选项,但我没有看到任何 +ve 结果来清除错误警报。我解决了这些问题。实际上问题在于 nagios 服务器上的重复服务配置: location:: /etc/nagios4/objects/services/ 从该位置清除重复的服务配置并重新加载 nagios 服务。问题已解决。

标签: nagios


【解决方案1】:

我修复了这些问题。实际上问题在于 nagios 服务器上的重复服务配置:location:: /etc/nagios4/objects/services/

从该位置清除重复的服务配置并重新加载 nagios 服务。

问题已解决。

【讨论】:

    【解决方案2】:

    我在我的系统上重现了这个问题。我有 620 台主机,7000 项服务。 当服务数量超过 6189 时,即使只有 /bin/true 命令,所有插件都无法使用,“返回码 7 越界”。

    主要解决办法是在nagios.cfg中设置:

    enable_environment_macros=0
    

    我很长一段时间都不想这样做,因为我有一个插件在构建 HTML 电子邮件通知时使用了 nagios ENV 变量。 但是我发现这个解决方案可以运行,您需要以这种方式为特定插件手动设置必要的 ENV:

    define command{
     command_name    notify-html-service
     command_line NAGIOS_NOTIFICATIONTYPE='$NOTIFICATIONTYPE$' NAGIOS_SERVICEATTEMPT='$SERVICEATTEMPT$' NAGIOS_SERVICESTATE='$SERVICESTATE$'  NAGIOS_CONTACTGROUPNAME='$CONTACTGROUPNAME$' NAGIOS_HOSTNAME='$HOSTNAME$' NAGIOS_SERVICEDESC='$SERVICEDESC$' NAGIOS_LONGSERVICEOUTPUT='$LONGSERVICEOUTPUT$' NAGIOS_HOSTADDRESS='$HOSTADDRESS$' NAGIOS_HOSTGROUPNAMES='$HOSTGROUPNAMES$' NAGIOS_HOSTALIAS='$HOSTALIAS$' NAGIOS_SERVICEOUTPUT='$SERVICEOUTPUT$' NAGIOS_LONGDATETIME='$LONGDATETIME$' NAGIOS_SERVICEDURATION='$SERVICEDURATION$' NAGIOS_NOTIFICATIONRECIPIENTS='$NOTIFICATIONRECIPIENTS$' NAGIOS_SERVICEGROUPALIAS='$SERVICEGROUPALIAS$' NAGIOS_HOSTALIAS='$HOSTALIAS$' NAGIOS_NOTIFICATIONAUTHOR='$NOTIFICATIONAUTHOR$' NAGIOS_NOTIFICATIONCOMMENT='$NOTIFICATIONCOMMENT$' NAGIOS_CONTACTEMAIL='$CONTACTEMAIL$' NAGIOS_SERVICEATTEMPT='$SERVICEATTEMPT$' /usr/bin/perl '$USER7$/send.notify' http://192.168.1.1/nagios 2>/tmp/send.log
    }
    define command{
     command_name    notify-html-host
     command_line NAGIOS_NOTIFICATIONTYPE='$NOTIFICATIONTYPE$' NAGIOS_HOSTSTATE='$HOSTSTATE$' NAGIOS_CONTACTGROUPNAME='$CONTACTGROUPNAME$' NAGIOS_HOSTNAME='$HOSTNAME$' NAGIOS_HOSTADDRESS='$HOSTADDRESS$' NAGIOS_HOSTGROUPNAMES='$HOSTGROUPNAMES$' NAGIOS_HOSTALIAS='$HOSTALIAS$' NAGIOS_LONGDATETIME='$LONGDATETIME$' NAGIOS_NOTIFICATIONRECIPIENTS='$NOTIFICATIONRECIPIENTS$' NAGIOS_SERVICEGROUPALIAS='$SERVICEGROUPALIAS$' NAGIOS_LONGHOSTOUTPUT='$LONGHOSTOUTPUT$' NAGIOS_HOSTALIAS='$HOSTALIAS$' NAGIOS_HOSTOUTPUT='$HOSTOUTPUT$' NAGIOS_HOSTDURATION='$HOSTDURATION$' NAGIOS_NOTIFICATIONAUTHOR='$NOTIFICATIONAUTHOR$' NAGIOS_NOTIFICATIONCOMMENT='$NOTIFICATIONCOMMENT$' NAGIOS_CONTACTEMAIL='$CONTACTEMAIL$' NAGIOS_SERVICEATTEMPT='' /usr/bin/perl '$USER7$/send.notify' http://192.168.1.1/nagios 2>/tmp/send.log
    }
    

    这对我有帮助。一开始它是两个通知的一个命令,不同的主机/服务 ENV 变量由 nagios 预设:

    define command{
    command_name    notify-html
    command_line /usr/bin/perl $USER2$/send.notify http://192.168.1.1/nagios 2>/tmp/send.log
    }
    

    顺便说一下,nagios 文档不建议设置 enable_environment_macros=1:

    除了非常小的设置之外,启用此功能是一个非常糟糕的主意, 因为这意味着插件、通知脚本和事件处理程序可能会运行 超出环境空间。也会带来显着的提升 在 CPU 和内存使用中,并大大减少检查次数 你可以跑了。

    PS/ 由于需要将 notify-html 命令拆分为 notify-html-host 和 notify-html-service,我的答案已被编辑。由于宏定义错误(主机通知事件中不存在服务宏),我开始收到错误的主机通知,我不得不跟踪 nagios 的调试日志并看到很多“警告:处理宏时发生错误”消息。 祝你好运。

    【讨论】:

    • 您也可以考虑减少检查次数。事实上,当我找到解决方案时,我拒绝了许多检查,因为它们重复或不重要。
    【解决方案3】:

    我遇到了同样的问题,但似乎是由于绑定到单个服务组的服务数量所致。一旦服务组报告了超过九个服务,它们就会返回:

    [XXXXXXX] Warning: Return code of 7 for check of service 'XXXXXXX' on host  was out of bounds.
    

    我将我的服务重新组织成几个单独的服务组,所有检查都再次正常运行,没有任何进一步的调整。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多