내 로그 파일 중 하나의 오류 수가 특정 제한을 초과하는 경우 특정 종료 상태를 발생시키는 명령을 사용하고 있습니다. 명령은 다음과 같습니다.
cd /home/serveradmin/logs/ | ls -trc | grep gateway | tail -1 | xargs cat | grep error | wc -l | awk '{if($1 >= "35000"){print "Critical: ",$1;exit 2} else if ($1 >= "25000") {print "Warning: ",$1;exit 1} else {exit 0} }'
명령을 실행한 후 다음 명령을 사용하여 종료 상태를 확인했습니다(내 파일의 오류 개수가 25000보다 컸기 때문에 내 명령이 종료 코드 1을 반환했습니다).
echo $?
위 명령은 출력으로 1을 반환합니다.
내 nrpe.cfg 파일에서 다음과 같은 동일한 명령을 정의했습니다.
command[Error_Count]=cd /home/serveradmin/logs/ | ls -trc | grep gateway | tail -1 | xargs cat | grep error | wc -l | awk '{if($1 >= "35000"){exit 2} else if ($1 >= "25000") {exit 1} else {exit 0} }'
Nagios Core에서 서비스를 다음과 같이 정의했습니다.
define service {
host_name test_vm
service_description Error_Count
check_command check_nrpe!Error_Count
use generic-service
check_interval 1
}
서비스를 정의한 후 nagios 코어는 클라이언트의 nrpe.cfg 파일에 정의된 명령에서 종료 상태를 읽을 수 없습니다.
답변1
~처럼NRPE » 문제 해결 » FAQ - 출력을 읽을 수 없습니다설명하다:
이 오류는 NRPE가 문자 출력을 반환하지 않았음을 의미합니다.
명령은 다양한 상태 코드(2, 1 또는 0)로 종료되지만 실제 출력은 내보내지 않습니다.
~에서https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/pluginapi.html, "플러그인 출력 사양"은 다음과 같이 말합니다.
플러그인은 최소한 하나 이상의 텍스트 출력을 반환해야 합니다.
원하는 "텍스트 출력"을 나타내는 빨간색 강조 표시를 확인하세요.
awk
다양한 조건에서 일종의 출력을 내보내도록 코드를 조정합니다 .
awk '{
if($1 >= "35000")
{ print "Greater than or equal to 35000"; exit 2}
else if ($1 >= "25000")
{ print "Greater than or equal to 25000"; exit 1}
else
{ print "Less than 25000"; exit 0}
}'