我为nagios设置了以下服务:
define service { hostgroup_name LNX service_description /tmp Disk Usage check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /tmp' check_interval 1 max_check_attempts 3 retry_interval 1 check_period 24x7 notification_interval 2 notification_period 24x7 notification_options c,r,w notifications_enabled 0 contact_groups devops }
与以下命令关联的是:
define command { command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -u -t 60 -c $ARG1$ $ARG2$ }
所以最后执行的是什么(在命令行上运行时的输出)是:
$: /usr/local/nagios/libexec/check_nrpe -H <my host> -u -t 60 -c check_disk -a '-w 20% -c 10% -p /tmp' DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910
跟着这个echo $? 产生一个0,意味着确定/成功。
然而,nagios报告这是“错误代码255越界”,我不知道为什么。
在服务器上运行check_disk命令可以正常工作:
$: ./check_disk -w 20% -c 10% -p /tmp DISK OK - free space: /tmp 4785 MB (97% inode=99%);| /tmp=124MB;3928;4419;0;4910 $: echo $? 0
如上所示,它通过nagios服务器上的check_nrpe可执行文件完成。 意即:
check_disk )存在于远程系统上: command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$ /etc/xinetd.d/nrpe中的only_from指令中) 另外,这个检查在其他机器上运行正常,但不是所有的机器
为什么Nagios认为当我看到的所有内容都意味着它应该变为0,从而将服务标记为OK?
编辑:Nagios版本是在CentOS 7上运行的Nagios核心4,被检查的主机是5-7的centos,问题出现在多个不同版本的机器上
当你有如下check_command:
check_command check_nrpe!check_disk
绑定的命令名实际上是check_disk而不是客户端的check_nrpe 。
问题的原因
Nagios服务器中的服务设置请求受监视的客户端执行带有一个参数的check_disk命令。
-w 20% -c 10% -p /tmp
您在nrpe.cfg上的Nagios客户端上的check_disk命令的当前设置如下所示:
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
所以你通过NRPE传递给被监控客户端的命令实际上是:
/usr/lib64/nagios/plugins/check_disk -w -w 20% -c 10% -p /tmp -c $ARG2$ -p $ARG3$
因此,testing失败,因为命令不能成功执行。
解
如果你想传递3个不同的参数给Nagios客户端,试着修改你的check_command如下:
check_command check_nrpe!check_disk -a '-w 20% -c 10% -p /tmp'
确保您在Nagios客户端上configuration了相应的命令:
command[check_disk]=/usr/lib64/nagios/plugins/check_disk $ARG1$
另一个选项是更改服务器configuration,如下所示:
check_command check_nrpe!check_disk
与相应的客户端configuration:
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /tmp
您应该检查nrpe客户端是否正在接受来自nagios服务器的连接。
cat /etc/xinetd.d/nrpe service nrpe { flags = REUSE socket_type = stream port = 5666 wait = no user = nagios group = nagios server = /usr/local/nagios/bin/nrpe server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd log_on_failure += USERID disable = no only_from = xxx.xxx.xxx.xxx }
确认only_from行有你的nagios IP
其次你要检查以确保check_nrpe脚本具有正确的权限。 它应该由nagios:nagios拥有
-rwxrwxr-x. 1 nagios nagios 81542 Jul 11 13:08 /usr/local/nagios/libexec/check_nrpe