특정 폴더에 새로운 파일 생성 시 Slack 메세지 보내기(AWS EC2)

경쓱타드·2024년 7월 6일
0

구현

목록 보기
4/4

AWS에서 배포 중인 서버에 에러가 발생하면 Slack에 메세지를 보내서 에러를 바로 확인할 수 있도록 구현하려고 한다. 먼저 새로운 파일 생성 시 slack에 메세지를 전송할 수 있도록 구축한다.

1. 슬랙 앱 생성하기

  1. 워크스페이스 생성
    https://slack.com/intl/ko-kr/

  2. 슬랙 앱 생성



  1. 앱 권한 설정
  • Features → OAuth & Permissions → Scopes
  • 특정 채널에 메세지 보내는 기능 추가 : incoming-webhook, chat:write
  • 기능 확인 : https://api.slack.com/methods


  1. 슬랙 봇 기능 설정
  • Settings → Basic Information → Add features and functionality
  • Bots에서 체크가 안되어있다면 설정하기
  1. 워크스페이스에 앱 연동을 위한 토큰 생성
  • Features → OAuth & Permissions → OAuth Tokens for Your Workspace
  • 생성한 토큰을 통해서 API 연동에 사용

  1. 워크스페이스에 앱 추가
  • 생성한 앱을 채널에 추가하기

  1. webhook 링크 확인
  • Features → Incoming Webhooks → Webhook URLs for Your Workspace

2. inotifywait 설치

  • inotifywait : 파일 시스템 이벤트를 모니터링하는 도구
  • 우분투 서버에 아래의 명령어로 설치
sudo apt-get install inotify-tools

3. 스크립트 생성

  1. 새로 생성된 파일을 파악하고 slack에 메세지 보내는 스크립트(error-slack.sh)
# 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
  1. 위 스크립트를 백그라운드에서 동작시키는 코드(deploy-error-slack.sh)
  • 로그 파일을 error-slack.log파일에 저장됨
# 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 &
  1. 코드 실행시키기
chmod +x deploy-error-slack.sh
./deploy-error-slack.sh
  1. 슬랙 메세지 전송
  • /home/ubuntu/error-slack 폴더에 새로운 txt 파일이 생기면 슬랙에 메세지 전송
  • 폴더 구조
ls -al


참고 사이트 : https://velog.io/@devand/%EC%8A%AC%EB%9E%99-Web-API-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90-1

profile
백엔드 개발자를 시작으로 도메인 이해도까지 풍부한 개발자가 목표입니다!

0개의 댓글