프로세스 PID의 변경 사항 모니터링

프로세스 PID의 변경 사항 모니터링

항상 실행되어야 하는 서비스가 있습니다. 서비스가 언제 중지되거나 다시 시작되는지 알고 싶습니다.

서비스의 PID 참조를 고려했습니다. 재부팅하면 새로운 PID를 얻게 됩니다. 그래서 pid가 변경되면 경고나 이메일을 보내고 싶습니다. 이를 수행하는 가장 덜 침해적인 방법은 무엇입니까?

이제 5분마다 파일에 pid를 쓰는 cron 작업이 생겼습니다. 이 파일의 pid 변경을 모니터링할 수 있는 Linux 도구가 있습니까? 아니면 외부에서 실행되는 Python 스크립트와 같이 이 파일을 추출하고 그런 방식으로 모니터링할 수 있는 다른 것이 있어야 합니까?

답변1

빈스 씨, 지속적인 모니터링을 위해서는 Nagios와 같은 오픈소스 솔루션을 살펴보는 것이 좋습니다. 귀하의 질문에 대해 아래 BASH 스크립트 prog_stat.sh는 매초마다 DATE 및 PID를 파일에 기록한 다음 스크립트에 추가하여 PID 변경 사항을 구문 분석하고 후속 조치를 추가할 수 있습니다. CTRL-C 죽이기

Nagios 개발에 사용하는 머신이 있습니다. 이 스크립트는 매초마다 해당 머신의 Nagios PID를 확인합니다. 수면을 변경하여 시험 빈도를 변경하십시오.

    #!/bin/bash
    PROG=Nagios          
    LOG=/home/user/nagios_pid.log   
    echo "" > $LOG             
    while true; do    
    PID=`ps ax | grep -i "$PROG" | awk 'NR==1{print $1}'`                  
    echo `date -u` " "  $PID >> $LOG                      
    sleep 1                                               
    done                 
    exit                   

스크립트 출력

    [user ~]#cat nagios_pid.log
    Sat Mar 30 11:15:50 UTC 2019   1171
    Sat Mar 30 11:15:51 UTC 2019   1171
    Sat Mar 30 11:15:52 UTC 2019   1171
    Sat Mar 30 11:15:53 UTC 2019   1171
    Sat Mar 30 11:15:54 UTC 2019   1171
    Sat Mar 30 11:15:55 UTC 2019   1171
    Sat Mar 30 11:15:56 UTC 2019   1261
    Sat Mar 30 11:15:57 UTC 2019   1261
    Sat Mar 30 11:15:58 UTC 2019   1261
    Sat Mar 30 11:15:59 UTC 2019   1261

변경 사항 정리:

   [user ~]# sort -k 7,7 -u  nagios_pid.log
    Sat Mar 30 11:15:50 UTC 2019   1171
    Sat Mar 30 11:15:56 UTC 2019   1261

이제 잠재적으로 긴 파일을 수동으로 구문 분석할 필요 없이 서비스가 다시 시작된 시기를 확인할 수 있습니다.

-표시

답변2

시스템이 systemd에 의해 제어되고 많은 최신 시스템이 제어되는 경우( systemctl이런 경우인지 확인하려면 입력하세요) 서비스가 다시 시작될 때 조치를 취하도록 구성할 수 있습니다.이 답변ServerFault에는 단 하나의 예만 제공됩니다.

또 다른 해결책은 서비스가 종료될 때 이를 알려주는 셸 스크립트로 서비스를 래핑하는 것입니다. 그러나 프로세스가 자체적으로 데몬화되는 경우에는 작동하지 않습니다.

관련 정보