내 로드 밸런서에서 nginx 서비스를 모니터링하기 위해 Nagios를 설정하려고 하는데 서비스 실행을 표시하는 데 실패했습니다. 명령과 서비스 정의는 다음과 같습니다. 루트에 의해 생성되지 않은 프로세스는 실행 중인 것으로 표시되지 않는 것 같습니다. nginx 프로세스는 www-data에 의해 실행됩니다. 나는 다른 사용자로 실행 중인 "최상위" 프로세스를 확인하는 것과 같은 간단한 작업도 시도했습니다. 아래에 제시된 내용은 루트에서 실행되는 프로세스를 선택하는 한 잘 작동합니다. 프로세스가 다른 사용자에 의해 생성되면 중요한 것으로 표시되고 작동하지 않습니다. 이견있는 사람?
define command {
command_name check_nginx
command_line $USER1$/check_procs -c 1: -C nginx
}
define service {
use local-service
host_name my_host
service_description Load Balance Service
check_command check_nginx
}
답변1
check_proc 플러그인에 포함된 다양한 옵션을 모두 시도했지만 아무데도 가지 못한 후 다른 경로로 가기로 결정했습니다. 다음 Python 스크립트를 작성하여 플러그인 디렉토리에 포함시켰습니다. Python 스크립트 이름은 check_service.py입니다. 다른 이름을 지정하는 경우 이에 따라 아래 서비스와 명령을 수정해야 합니다.
import os
status = os.system('systemctl is-active --quiet nginx')
if status == 768:
print('Critical, Service is not running')
exit(2)
elif status == 0:
print('OK, Service is Running')
exit(0)
그런 다음 Commands.cfg 파일에 다음 명령을 추가했습니다. $ARG1$은 내가 작업 중인 스크립트의 향후 버전에 사용됩니다. 필수는 아닙니다.
define command{
command_name check_service
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
}
서비스를 이렇게 정의했습니다
define service {
use local-service
host_name debian
service_description Load Balance Service
check_command check_service
}
그런 다음 클라이언트에서 이 명령을 nrpe.cfg 파일에 추가했습니다.
command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py
이것이 길 어딘가에 누군가에게 도움이 되기를 바랍니다.