아무래도 서버 개발을 하다 보면 이 서버가 잘 돌아가고 있는지 모니터링 하는 시스템이 필요하다.
거창한 서비스 필요 없이 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이 죽은 경우에는 잘 모니터링 할 수 있지만
서버 자체가 죽었을 때에는 정상적인 모니터링이 되지 않을 수 있다.
'개발' 카테고리의 다른 글
nestjs 앱 docker로 배포하기 (0) | 2023.12.07 |
---|---|
AWS Amplify build 문제 : cannot find module 'semver/functions/cmp' (0) | 2022.12.06 |
Terraform 액세스 키 환경변수 등록 (0) | 2022.09.08 |
Nestjs e2e 테스트 세팅 (0) | 2022.08.31 |
Docker 관련 정리 (0) | 2022.08.29 |