원격 스크립트 실행이 완료될 때까지 check_nrpe를 기다리게 하려면 어떻게 해야 합니까?

원격 스크립트 실행이 완료될 때까지 check_nrpe를 기다리게 하려면 어떻게 해야 합니까?

NRPE용 플러그인으로 사용되는 Python 스크립트가 있습니다. 이 스크립트는 "ps ax | grep process"가 연결된 SSH one-liner를 수행하여 프로세스가 가상 머신에서 실행되고 있는지 확인합니다. 스크립트를 수동으로 실행하면 예상대로 작동하고 NRPE에 대한 단일 출력 줄과 프로세스 실행 여부에 따른 상태를 반환합니다.

Nagios 서버에서 이 스크립트를 실행하기 위해 setup 명령을 실행하려고 하면"NRPE: 출력을 읽을 수 없습니다"라는 출력을 얻습니다. 그러나 스크립트를 수동으로 실행하면 출력이 반환되기까지 약 1초 정도 걸립니다. 다른 명령은 잘 실행되므로 NRPE는 즉시 실패하지 않고 출력을 위해 1~2초 정도 기다려야 하는 것처럼 보이지만 이를 수행할 방법을 찾을 수 없습니다. 어떤 팁이 있나요?

추신: 가상 머신은 호스트 머신 이외의 다른 곳에서는 액세스할 수 없으므로 프로세스를 확인하기 위해 호스트에서 VM으로 SSH를 통해 연결하는 nrpe 플러그인이 필요합니다.

답변1

지침에 따라 시간 초과를 변경할 수 있습니다.여기또는nrpe 문서, 하지만 이것이 귀하의 문제는 아닌 것 같습니다. 그렇지 않으면 다음과 같은 오류가 표시됩니다.

CHECK_NRPE: Socket timeout after 270 seconds.

이미 작성된 원하는 데이터를 반환하는 nagios 플러그인도 있을 수 있습니다.

답변2

왜 사용하지 않습니까?check_proc플러그인?

가상 머신에서 다음 위치에 서비스에 대한 명령을 정의합니다 /etc/nagios/nrpe.cfg.

command[check_<service_name>]=/usr/lib64/nagios/plugins/check_procs -c 1:1 -C <service_name>

Nagios 서버에서:

define service{
    use                     critical-service
    host_name               xx
    service_description     <service_name>
    check_command           check_nrpe!check_<service_name>
    event_handler           autostart_<service_name>!xx
    process_perf_data       0
    contact_groups          admin
}

샘플 결과:

# su - nagios -s /bin/bash
-bash-3.2$ /usr/local/nagios/libexec/check_nrpe -H xx -c check_<service_name>
PROCS OK: 1 process with command name '<service_name>'

답변3

기본 시간 제한은 약 10초인 것 같은데, 아마도 그렇지 않을 것입니다.

검사를 실행하기 위해 ssh를 사용하는 경우 nrpe는 설치 옵션에 따라 "nagios" 사용자로 실행 중일 수 있다는 점을 기억하세요. 해당 사용자에게 올바른 키와 SSH 옵션이 있습니까?

관련 정보