본문 바로가기

개발

crontab으로 서버 health check 시스템 만들기

아무래도 서버 개발을 하다 보면 이 서버가 잘 돌아가고 있는지 모니터링 하는 시스템이 필요하다.
거창한 서비스 필요 없이 crontab과 curl 을 사용하면 쉽게 간단한 모니터링 시스템을 만들 수 있다.
하지만 정말 동작하는지 아닌지만 확인할 수 있다.

.sh 파일을 하나 만들어준다.

vi health\_check.sh 
#!/bin/bash  
nowdate=$(date +"%Y-%m-%d %H:%M:%S")

url="검사하고 싶은 url"
status_code=$(curl -LI ${url} -o /dev/null -w '%{http_code}\n' -s)
if [ $status_code != '200' ]
then
    curl -X POST -H 'Content-type: application/json' --data '{"text":"해당 url에 문제가 있습니다."}' ${slack_api}
fi

url에 모니터링하고 싶은 서버의 주소를 넣는다.
그리고 then 구문에 status code가 200이 아니라면 발생할 로직을 작성해준다.
나는 slack api를 사용해서 slack notification을 주는 로직을 작성했다.

만든 .sh 파일에 권한을 준다.

chmod +x health_check.sh

crontab 파일을 수정해준다.

crontab -e 

매분마다 해당 파일이 실행되도록 한다.

* * * * * /home/ubuntu/health_check.sh

cron 재시작

sudo service cron restart

잘 동작하는지 확인하면 끝

주의할 점은 해당 cron 이 동작하는 서버가 자신이 모니터링하고 싶은 서버에서 동작한다면
application이 죽은 경우에는 잘 모니터링 할 수 있지만
서버 자체가 죽었을 때에는 정상적인 모니터링이 되지 않을 수 있다.