Nagios:返回码7超出范围

时间:2018-12-03 10:47:52

标签: nagios

服务已在远程节点上启动并运行。 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.

3 个答案:

答案 0 :(得分:1)

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

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

问题已清除。

答案 1 :(得分:0)

我在系统上重现了此问题。我有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
}

这对我有所帮助。最初,这是两个通知的命令,由nagios预设了不同的主机/服务ENV变量:

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的调试日志,并看到很多“警告:处理宏时发生错误”消息。 祝你好运。

答案 2 :(得分:0)

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

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

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