-
EC2 디스크 모니터링클라우드 2021. 1. 8. 11:38
AWS ec2 디스크 모니터링 방법을 찾아보다
쉘스크립트로 비교적 간단해 보이는 방법에 대한 글을 찾았다.
zeddios.tistory.com/123lion-king.tistory.com/entry/AWS-EC2-instance-disk-usage-alert
따라하면서 로그를 남겨본다.
정말 Add App 하나 찾는것 부터도 헤깔린다 -_-;;
시키는데로 imcoming webhooks 까지 왔다.
Add 를 눌러보니 사용설명에 대한 것과 hook url 이름 & 아이콘 변경 화면이 나온다.
1. 메시지 보내기 : 대략 json 형태로 post 로 실어서 호출하면 된다는 내용
2. 링크 추가하기 : 링크는 어떻게 보내면 된다는 내용
3. 아이콘 커스터마이징 : 메시지 아이콘 어떻게 보내는지에 대한 내용
curl -X POST --data-urlencode "payload={\"channel\": \"#general\", \"username\": \"webhookbot\", \"text\": \"This is posted to #general and comes from a bot named webhookbot.\", \"icon_emoji\": \":ghost:\"}" https://hooks.slack.com/services/<url>
실제 curl 명령어를 bash 쉘에서 테스트 해보니 메시지가 잘 도착한다.이제 쉘스크립트 작성!
: monitor.sh 로 하나 만든다#!/bin/sh IP=$(hostname -I); LIMIT=90; 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\": \"#general\", \"username\": \"webhookbot\", \"text\": \"Usage of disk is in danger. IP: $IP ROOT_DISK_USAGE: $root_disk_used % <https://ap-southeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-southeast-2#Instances:search=$IP |Click here to go AWS EC2 Instance > \"}" https://hooks.slack.com/services/{슬랙 웹 훅 url}; mount_disk_used=$(df /pds | grep ^/ | awk '{print $5}'); mount_disk_used=${mount_disk_used::-1}; test -z $mount_disk_used || test $LIMIT -lt $mount_disk_used && curl -X POST --data-urlencode "payload={\"channel\": \"#general\", \"username\": \"webhookbot\", \"text\": \"Usage of disk is in danger. IP: $IP MOUNT_DISK_USAGE: $mount_disk_used % <https://ap-southeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-southeast-2#Instances:search=$IP |Click here to go AWS EC2 Instance > \"}" {슬랙 웹 훅 url};
쉘 스크립트 내용을 짧게 보자면
df 의 결과를 기반으로 / 파티션과 , /pds 파티션 용량이 90% 넘으면 슬랙으로 메시지를 보낸다는 내용이다.
참고로 나는 ec2 가 시드니에 있어서 리젼이 southeast 이다.더보기** 어라 centos 타입에서 쉘스크립트 서브스트링 부분이 0보다 작다고 작동을 안하는 상황이 생겼다.
그래서 % 를 공백으로 replace 하는 구문으로 바꿔서 실행하였다.
root_disk_used=${root_disk_used/\%/''}; 이런식으로
이제 crontab -e 편집해서 30분 단위로 등록해둔다
# 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7) */30 * * * * source /etc/profile;/home/ec2-user/monitor.sh
완전 잘 동작한다! 굿굿!'클라우드' 카테고리의 다른 글
aws openvpn 사용하기 (0) 2019.12.13 AWS Code Commit 사용자 추가 (0) 2019.08.23 gitlab 마이그레이션 이후 에러 (0) 2019.08.15 슬랫봇으로 아마존 ec2 start & stop (0) 2019.07.08 AWS CodeStar 체험기 (0) 2019.03.12