AWS에서 배포 중인 서버에 에러가 발생하면 Slack에 메세지를 보내서 에러를 바로 확인할 수 있도록 구현하려고 한다. 먼저 새로운 파일 생성 시 slack에 메세지를 전송할 수 있도록 구축한다.
워크스페이스 생성
https://slack.com/intl/ko-kr/
슬랙 앱 생성
sudo apt-get install inotify-tools
# error-slack.sh
#!/bin/bash
# 모니터링할 디렉토리 경로
MONITORED_DIR="/home/ubuntu/error-slack"
# Slack Webhook URL
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/{코드}"
# 로그 파일 경로
LOG_FILE="/home/ubuntu/error-slack/script/error-slack.log"
# inotifywait를 사용하여 파일 생성 이벤트 모니터링
inotifywait -m -e create --format '%w%f' "${MONITORED_DIR}" | while read NEW_FILE
do
# 파일이 텍스트 파일일 경우에만 처리
if [[ "${NEW_FILE}" == *.txt ]]; then
# 파일 내용을 읽어오기
FILE_CONTENT=$(cat "${NEW_FILE}")
# Slack 메시지 전송
curl -X POST -H 'Content-type: application/json' --data "{
\"text\": \"에러: ${NEW_FILE}\n내용:\n${FILE_CONTENT}\"
}" ${SLACK_WEBHOOK_URL}
# 로그 파일에 기록
echo "$(date): 파일 생성 감지 - ${NEW_FILE}" >> ${LOG_FILE}
fi
done
# deploy-error-slack.sh
#!/bin/bash
# 모니터링 실행 코드 경로
EXE_FILE="/home/ubuntu/error-slack/script/error-slack.sh"
# 로그 파일 경로
LOG_FILE="/home/ubuntu/error-slack/script/error-slack.log"
# 스크립트를 백그라운드에서 실행하고 PID를 저장
echo "> 백그라운드에서 error-slack 실행 중"
nohup ${EXE_FILE} > ${LOG_FILE} 2>&1 &
chmod +x deploy-error-slack.sh
./deploy-error-slack.sh
ls -al