Prometheus로 Python HTTP 서버와 프로세스 체크

먼저, http 서버를 돌려야 하기 때문에 python3 설치 여부 확인

which python3

내가 체크하고자 하는 프로세스가 돌고 있는지 체크하는 sh 파일

# cd /usr/local/bin 에
### 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"
# 이렇게 작성 함.

위의 파일이 정기적으로 돌면서 http에 update하는 sh파일

#!/bin/bash

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

혹시 모르니, /var/www/html => 디렉토리 생성.

작성했던 sh 파일을 기반으로 systemd에 등록해주자.

### python-http 서버 데몬으로 실행.
### crawler_http.service

[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

만들었던 sh 파일 실행.
### 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

댓글

댓글 남기기