Prometheus로 python HTTP서버로 프로세스 헬스체크

/usr/local/bin 경로에 sh 파일 생성

  • 프로세스 체크 sh 파일

filename: crawler_check.sh

#!/bin/bash

# 체크할 프로세스의 경로를 변수에 저장합니다.
PROCESS_PATH="./venv/bin/python tool/checkup_crawler.py --prod -d"
# 프로세스가 실행 중인지 확인합니다.
if pgrep -f "$PROCESS_PATH" > /dev/null
then
    PROCESS_STATUS=1  # 프로세스가 실행 중이면 1
else
    PROCESS_STATUS=0  # 프로세스가 실행 중이지 않으면 0
fi
# Prometheus 메트릭 포맷으로 출력합니다.
echo "# HELP process_up Is the process running (1 for yes, 0 for no)"
echo "# TYPE process_up gauge"
echo "process_up $PROCESS_STATUS"
  • metric_server.sh — 반복적으로 메트릭 체크
#!/bin/bash

while true; do
    /usr/local/bin/crawler_check.sh > /var/www/html/metrics
    sleep 60
done

sh 파일을 생성 후, 서비스 등록을 해줘야 터미널 종료 후에도 prometheus scrap 가능

  • metric_server.service 파일
[Unit]
Description=Metric Server Script
After=network.target

[Service]
ExecStart=/usr/local/bin/metric_server.sh
User=root
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
  • crawler_http.service 파일

파이썬으로 http 서버 여는 서비스 파일

[Unit]
Description=crawler_check
After=network.target

[Service]
WorkingDirectory=/var/www/html
ExecStart=/bin/python3 -m http.server 8080
User=root
Restart=always

[Install]
WantedBy=multi-user.target

잘 정상동작 하는지 확인

curl localhost:8080/metrics

댓글

댓글 남기기