관리 메뉴

피터의 개발이야기

[AWS] EC2 파일시스템의 알람 간단하게 RocketChat 받는 방법 본문

AWS

[AWS] EC2 파일시스템의 알람 간단하게 RocketChat 받는 방법

기록하는 백앤드개발자 2022. 6. 10. 13:05
반응형

 

ㅁ 개요

 ㅇ EC2 파일 시스템이 꽉차면 더 이상 저장할 공간이 없게 되면서 서버 장애가  발생한다.

 ㅇ 이를 예방하기 위해 정기적으로 파일시스템을 점검하거나 APM Agent를 설치하여 모니터링을 해야한다.

 ㅇ 운영AWS 환경에는 Whatap을 이용해 EC2의 여러 지표를 모니터링하고 알람을 설정하였는데,

     개발EC2의 경우 간단하게 crontab + shell을 이용하여 rocketChat으로 알람을 발송하는 방법을 정리하였다.

 

ㅁ Shell 작성

[ec2-user@DEV-BASTION]$ cat volum_chk.sh
#!/bin/sh

# Ip Address
HOST_IP=$(hostname -I);

# ex) DEV-RCS-PRI-BASTION
HOST_NAME=$(hostname -s);

# 알람 임계점
ALARM_LIMIT=30;

# 현재 사용량
disk_used=$(df / | grep ^/ | awk '{print $5}' | sed 's/[^0-9]//g')

# 메시지생성
send_msg=$(echo Disk File System warn. Name:$HOST_NAME IP:$HOST_IP DiskUsed: $disk_used%)

# 알람 발송
test $ALARM_LIMIT -lt $disk_used && curl -X POST -H 'Content-Type:application/json' --data "{\"text\":\"$send_msg\"}" http://{{rocketChat_url}}/hooks/62aaaaaaa/zS29B6yHQ

 ㅇ EC2 서버의 고유한 정보를 얻기 위해 HOST_IP, HOST_NAME을 생성하였다.

 ㅇ 알람 임계점을 테스트를 위해 30으로 설정하였다.

 ㅇ df / : 루트경로의 파일 사용정보를 얻는다.

 ㅇ grep 을 통해 사용률이 포함되어 있는 row만 필터하였다.

 ㅇ awk를 통해 사용률만 추출하였다.

 ㅇ sed를 통해 추출한 사용률에서 %를 제거하였다.

 

ㅁ RocketChat webhook API 생성

 ㅇ 예전에 작성한 "[Rocket.Chat] Incoming WebHook Script"을 참조하여 API를 생성하면 된다.

 

 

ㅁ Crontab 생성

 

 

 ㅁ 실행된 결과 

 

 

ㅁ 함께 보면 좋은 사이트

 ㅇ https://lion-king.tistory.com/entry/AWS-EC2-instance-disk-usage-alert?category=854360 

 ㅇ shell test 확인법 : https://jhnyang.tistory.com/146

반응형
Comments