我遇到了一个非常奇怪的问题。
似乎当我执行check_nrpe
命令检查远程机器上的负载时,它在 上有效server1
,但完全相同的命令在 上不起作用server2
,并且它返回:
Warning threshold must be float or float triplet!
Usage:
check_load [-r] -w WLOAD1,WLOAD5,WLOAD15 -c CLOAD1,CLOAD5,CLOAD15
两台机器都很相似,都是 CentOS 7。我在两台机器上都安装了 NRPE 代理,如下所示:
yum install nrpe
我在两台机器上安装了check_load
如下插件:
yum install nagios-plugins-load
该命令在 server1 和 server2 上均定义确切地同样的方式,在/etc/nrpe.d/commands.cfg
文件中:
command[check_load]=/usr/lib64/nagios/plugins/check_load -r -w $ARG1$ -c $ARG2$
配置更改后,我重新启动了两台机器上的 NRPE 服务,所以这不是问题。现在我发送给 server1 和 server2 的实际 NRPE 命令是:
check_nrpe -H server1 -c check_load -a .15,.10,.05 .30,.25,.20
输出服务器1:
OK - load average per CPU: 0.00, 0.01, 0.03|load1=0.000;0.150;0.300;0; load5=0.005;0.100;0.250;0; load15=0.025;0.050;0.200;0;
确切地对server2执行相同的命令:
check_nrpe -H server2 -c check_load -a .15,.10,.05 .30,.25,.20
会导致上述警告信息!
在 server1 和 server2 上本地执行check_load
命令,在两台服务器上都有效。所以这是 NRPE 的问题?但为什么 server1 可以工作而 server2 不工作?SELinux 在所有地方都关闭了。
这怎么可能?!这根本说不通!
更新:
将commands.cfg
文件更改server2
为:(
command[check_load]=/usr/lib64/nagios/plugins/check_load -r $ARG1$ $ARG2$
删除 -w 和 -c 标志) 后
然后执行这个命令:
check_nrpe -H server2 -c check_load -a -w 0.15 -c 0.30
状态返回,不再有警告,但它返回负载的状态CRITICAL
..如果我在 server2 上使用相同的阈值在本地执行命令,它会返回OK
..
check_load -w 0.15 -c 0.30
这是 NRPE 中的一个错误吗?
更新:
好像以前也发生过这样的事情:
https://forums.meulie.net/t/warning-threshold-must-be-float-or-float-triplet/1525
但不幸的是没有给出解决方案..
更新:
SoLuTiOn:
接收 NRPE 命令的服务器必须允许传入参数,因此必须在以下内容中设置/etc/nagios/nrpe.cfg
:
dont_blame_nrpe=1
已解决 :P