최근에 딥러닝 실험을 돌리는 일이 많아졌다. 조금 오래 걸리는 작업이나 실험은 언제 끝날지 몰라 중간중간 확인하게 되는데, 이 과정이 생각보다 번거롭다. 실험을 돌려놓고 나중에 돌아와서 보니 오류로 종료되었다는 것도 늦게 알게 되기도 하고.. 그래서 작업 종료 시점에 알림을 받을 수 있는 방법을 찾아보았고 실제로 슬랙을 이용해 알림을 받을 수 있는 방법이 있어 정리해보았다.

1) 슬랙 웹훅(Webhook) URL 생성

먼저 슬랙 앱이 메시지를 보낼 수 있는 통로를 만든다.

  1. Slack API 페이지(api.slack.com/apps)로 이동하여 ‘Create New App’ 클릭

  2. From scratch 선택 이름 설정(나는 Exp-Alert로 설정) 워크스페이스 선택

  3. 좌측 메뉴에서 Incoming Webhooks를 클릭하고 On으로 활성화

  4. 하단의 Add New Webhook to Workspace를 클릭하여 알림을 받을 채널 선택

  5. 생성된 Webhook URL을 복사

2).zshrc에 슬랙 알림 함수 추가

이제 복사한 URL을 사용해서 터미널에서 호출할 함수를 만들면 된다. .zshrc 파일을 열어 아래 함수 내용을 추가

# 슬랙 알림 함수
function alert() {
    # 복사한 Webhook URL을 아래 따옴표 안에 넣기
    local url="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
    local status=$?  # 이전 명령어의 성공(0) 또는 실패(비영) 상태 저장
    local message
    
    if [ $status -eq 0 ]; then
        message="✅ *실험 종료 (Success)*\n>"
    else
        message="❌ *실험 종료 (Failed)*\n> 에러 발생 (Exit Code: $status)"
    fi

    # 슬랙에 JSON 데이터 전송
    curl -s -X POST -H 'Content-type: application/json' \
    --data "{'text': '$message'}" $url > /dev/null
}

3) 실제 사용법

이제 터미널에서 명령어를 실행할 때 뒤에 ; alert만 붙이면 된다

  • 예시: python main.py; alert