일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트
- Xcode
- git
- Mac
- 클라우드 서비스
- MySQL
- 자바 파일업로드
- 콜미동구
- 파이썬 웹크롤링
- JavaScript
- 깃
- 줄거리
- 기록하는 동구
- git push
- 책
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- Swift
- 동구
- 서평
- 한줄평
- 클라우드 서비스 특징
- 오류
- SpringBoot
- missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
- 독후감
- 데이메이커
- java
- spring
- 에러
- Mapper
- Today
- Total
인생은 속도가 아니라 방향이다
[AWS] EC2 디스크 사용량 부족할때 슬랙으로 알림보내기! 디스크 사용량 모니터링 초 간단 방법 본문
긴급 문제 발생 !
주말에 쉬고있는데 회사 사업팀 동료가 회사 서비스 페이지가 접속이 안된다고 연락이왔다.
로그를 보니 대충 DB가 작동을 안하길래 원인을 파악해보니 DB를 올려놓은 EC2 서버의 디스크 사용량이 가득차서 DB가 죽었다.
사실 이런건은 전에도 있어서 클라우드에서 볼륨을 높여주고 적용했었지만, 서버 디스크 사용을 최적화 하지않는 이상 계속 일어날 일이였다. 당시에는 임시방편으로 디스크 볼륨을 확장시켜줘서 끝났지만, 언제간 다시 일어날 일이 오늘 바로 터진것이다. 계속 이렇게 된다면 앞으로도 소 잃고 외양간 고치는 격이다. [EC2 디스크 용량을 확장하는 방법은 아래를 참고하면 도움이 될거에요!]
2020.12.16 - [AWS] 문제 해결 : 디스크용량이 부족할때 EBS 볼륨 늘리기
그래서 EC2 디스크 사용량이 일정량 이상 높아진다면, 회사에서 쓰는 슬랙채널로 알림을 보내게 만들어 보았다.
결과는 이렇습니다!
자 이제 한번 만들어볼까요? 목차는 다음과 같습니다.
- 슬랙에 알림을 보낼수 있는 incoming webhook 설정을 한다. (쉽게 애기하면, 채널에 메시지를 보내는 URL을 생성하고 요청을 할수있게 만든다)
- 리눅스 명령어를 통해 해당 EC2 서버에 디스크 사용량을 체크하고 일정 사용량이상으로 늘어나면 메시지를 보내는 쉘 스크립트를 생성한다.
- 해당 쉘 스크립트를 정기적으로 실행시키는 크론탭을 설정한다.
1. 슬랙 webhook API 만들기
https://jojoldu.tistory.com/552
슬랙 incoming webhook 관련 설명은 조졸두님께서 친절히 설명을 해주셔서 내가 따로 할 필요가없다. 위에를 참고해주세요!
2. 리눅스 쉘 스크립트 작성
EC2 디스크 사용량을 체크 하는 리눅스 쉘 스크립트 코드는 다음과 같다. 아래에서 설명을 해보도록 하겠습니다.
1
2
3
4
5
6
|
IP=$(hostname -I);
LIMIT=90;
slack_webhook_url="https://hooks.slack.com/{Slack Webhook URL}"
root_disk_used=$(df / | grep ^/ | awk '{print $5}');
root_disk_used=${root_disk_used::-1};
test $LIMIT -lt $root_disk_used && curl -X POST --data-urlencode "payload={\"channel\": \"#alert\", \"username\": \"disk_use_alert\", \"text\": \"Usage of disk is in danger. IP: $IP ROOT_DISK_USAGE: $root_disk_used % <https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances:search=$IP |Click here to go AWS EC2 Instance > \", \"icon_emoji\": \":sunrise:\"}" $slack_webhook_url;
|
cs |
쉘 스크립트 설명
1. IP=$(hostname -I);
: hostname -l 로 현재 host의 ip를 받아온후 IP라는 변수에 저장
2. LIMIT=90;
: 디스크 사용량 90 이상일때 알림오도록 설정
3. slack_webhook_url="https://hooks.slack.com/{Slack Webhook URL}"
: 슬랙 메시지를 보낼 URL 변수 지정
4.
root_disk_used=$(df /| grep ^/| awk '{print $5}');
root_disk_used=${root_disk_used::-1};
: 디스크 사용량을 숫자로 뽑아내기
df / -> 루트 디렉토리의 용량 상태 확인
grep ^/ | awk '{print $5}' -> 5번째 블락인 사용률 가져오기
${root_disk_used::-1}; -> % 퍼센트 짜르기
5.
test $LIMIT -lt $root_disk_used && curl -X POST --data-urlencode "payload={\"channel\": \"#alert\", \"username\": \"disk_use_alert\", \"text\": \"Usage of disk is in danger. IP: $IP ROOT_DISK_USAGE: $root_disk_used % <https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2#Instances:search=$IP |Click here to go AWS EC2 Instance > \", \"icon_emoji\": \":sunrise:\"}" $slack_webhook_url;
: #alert 채널에 disk_use_alert라는 이름으로 text의 value값을 슬랙 메시지를 보낸다.
자 이제, EC2 디스크사용량을 체크해 슬랙으로 알림을 보낼수있는 쉘 스크립트를 작성했습니다. 이제 이 스크립트를 주기적으로 작동시키는 크론탭을 만들어보죠.
3. 크론탭 설정
이분이 크론탭 설정하는법을 기가막히게 설명해주셔서 저는 그대로 배꼈습니다. ㅋㅋㅋ
크론탭 설정 결과는 다음과 같습니다.
1
|
*/30 * * * * /usr/local/bin/volume_check_script.sh
|
cs |
저는 30분마다 /usr/local/bin/volume_check_script.sh를 실행시키도록 만들었습니다.
혹시나 크론탭이 실행이 안된다면?
크론식도 잘 쓰고 스크립트도 잘 작성했는데 실행이 안되는거 같으면 꼭 스크립트의 실행권한이 있는지 확인하세요! 전 이것때문에 좀 삽질을 했습니다. ls -al 명령어를 쳐보시고,
위와 같이 파일에 x가 있어야 실행권한이 있는겁니다.
만약에 없다면 , 다음과 같이 실행권한을 주시면 해결 됩니다!
1
|
chmod +x /usr/local/bin/volume_check_script.sh
|
cs |
이상, AWS EC2 디스크 사용량 모니터링 시스템 만들기 였습니다. 읽어주셔서 감사합니다. 도움이 되길 바랍니다~
참고 :
https://jhnyang.tistory.com/146
https://jojoldu.tistory.com/552
https://lion-king.tistory.com/entry/AWS-EC2-instance-disk-usage-alert?category=854360
'백엔드(Back-end) > AWS' 카테고리의 다른 글
[AWS] 클라우드 컴퓨팅 대표적 특징 4가지 간단히 정리! (0) | 2021.08.07 |
---|---|
[AWS] 클라우드 컴퓨팅 이란? 그리고 무엇이고 왜 써야할까? (0) | 2021.08.07 |
[AWS] ssh Config 설정으로 AWS ssh 접속 간편하게 하기! (0) | 2021.05.11 |
[AWS] 문제 해결 : 디스크용량이 부족할때 EBS 볼륨 늘리기 (1) | 2020.12.16 |