AWS
EC2 모니터링- Slack 슬랙 연동 하여 알림 받기
산도리
2024. 8. 24. 01:18
안녕하세요! 오늘은 인프라 파트 중 모니터링에 관련된 얘기를 해볼까 합니다.
서버를 운영하다보면 여러 장애가 발생하곤 합니다. 물론 모든 장애를 모니터링 할 수는 쉽지 않겠지만, 이번에는 가장 기본적인 서버가 죽었을 때 스크립트 작성을 통해 Slack으로 알림을 받고자 합니다
자, 이제 시작해봅시다!
목차는 다음과 같습니다.
1. Slack에 알림을 보낼 수 있는 incoming webhook(수신 웹후크) 설정 하기
2. 쉘 스크립트 작성을 통해 EC2 인스턴스 내에서 서버 모니터링 하기
간단하죠? 하나씩 해보겠습니다.

먼저 Slack 왼쪽 하단에 앱 > 앱 추가를 클릭하자!

이어서 검색창에 incoming webhooks 를 입력하고, 추가 버튼을 눌러줍니다!

Slack에 추가 클릭~~~

다음은 어떤 채널에 알림을 전송할지 정하는 화면인데요!
기존에 보내고 싶은 채널이 있다면 선택을 해주시면 되고, 새로 생성을 원하신다면 새 채널 생성을 클릭 합니다!
그 다음 수신 웹후크 통합 앱 추가 클릭!

이제 중요해요! 여기까지 오셨다면 노란색 줄 쳐진 부분에 url이 나올건데요! 이를 복사해서 기억하고 있어야 합니다~! 이를 활용해서 알림을 보낼거니까요~!
자, 여기까지 무사히 오셨다면
이제 본격적으로 EC2 내부에서 스크립트를 짜보겠습니다!
저는 JAR 프로세스 실행 하나, 그리고 NPM 서버 하나를 모니터링 하고 싶은데요. 스크립트는 아래와 같습니다!
#!/bin/bash
# Slack Webhook URL
WEBHOOK_URL="복사한 URL 입력"
# EC2 인스턴스의 프라이빗 IP 주소 가져오기 --> 이쪽 코느는 구글링해서 찾아보세요~~
TOKEN=$()
PRIVATE_IP=$()
# 현재 시간 가져오기
current_time() {
date "+%Y-%m-%d %H:%M:%S"
}
# 알림을 보낼 함수
send_slack_notification() {
local message=$1
local time=$(current_time)
curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"${message} (IP: ${PRIVATE_IP}, 발생 시각: ${time})\"}" $WEBHOOK_URL
}
# 프로세스 모니터링 함수
monitor_processes() {
# Java 프로세스 확인
java_process=$(ps aux | grep '[j]ava.*\.jar')
if [ -z "$java_process" ]; then
send_slack_notification "Alert: 운영계 서버가 동작하지 않습니다. 개발팀은 확인해 주세요!"
fi
# npm run dev 프로세스 확인
npm_process=$(ps aux | grep '[n]pm.*run dev')
if [ -z "$npm_process" ]; then
send_slack_notification "Alert: 관리자 페이지가 동작하지 않습니다. 개발팀은 확인해 주세요!"
fi
}
# 무한 루프로 1분마다 체크
while true; do
monitor_processes
sleep 60
done
단순히 프로세스 조회를 통해 해당하는 프로세스가 없다면 슬랙으로 알림을 보내는 스크립트 입니다! 이제 잘 가는지 확인해볼까요?

짜잔! 알림이 잘 오는 것을 확인했습니다!~!~!
여기까지 EC2 + Slack 연동을 통해 서버 모니터링이었습니다!
감사합니다!