
매우 이상한 문제가 있습니다. 원격 시스템의 로드를 확인하기 위해 명령을 실행하면 에서는 작동 하지만 정확히 동일한 명령이 에서는 작동하지 않고 다음을 반환하는
것 같습니다 .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
해결 : 피