【AWS】 cron 실행 결과를 Slack에 통지

6951 단어 슬랙cron
서버의 시스템 상태를 정기적으로 확인하고 싶지만 도구를 넣을 정도가 아니기 때문에
cron을 사용하여 shell 파일을 자동으로 실행하도록했습니다.

그런 다음 Slack의 IncomingWebhooks를 사용하여 Bot이 자동으로 중얼거리는 것을 시도했습니다.

Slack Incoming Webhook 등록



우선 Slack의 Incoming Webhook을 준비합니다.
Slack 설정에서 その他管理項目에서 App管理를 선택하십시오.

브라우저가 열리고 관리 화면이 나오므로 검색창에서 Incoming를 입력하면 맨 위에 Incoming Webhook
Incoming Webhook 앱 세부정보 화면에서 Slackに追加를 선택합니다.

봇이 중얼거리는 채널을 선택하고 Incoming Webhookインテグレーションの追加

추가하면 Webhook URL라는 것이 생성됩니다.
이 URL에 http 액세스 한 것을 트리거에 Bot가 중얼거리는 구조가 되어 있습니다

Slack 연합 Shell 파일 만들기



다음으로 Slack에 http 액세스를 날리는 Shell을 준비합니다.
기본적으로 copipe로 좋다고 생각합니다.
아래 3개만 자신의 정보로 다시 작성해 주세요.
  • 생성된 Webhook URL
  • slack 송신 채널
  • slack 전송 이름

  • webhook.sh
    #!/bin/sh
    
    set -eu
    
    #Incoming WebHooksのURL
    WEBHOOKURL="生成したWebhook URL"
    #メッセージを保存する一時ファイル
    MESSAGEFILE=$(mktemp -t webhooksXXXX)
    trap "
    rm ${MESSAGEFILE}
    " 0
    
    usage_exit() {
        echo "Usage: $0 [-m message] [-c channel] [-i icon] [-n botname]" 1>&2
        exit 0
    }
    
    while getopts c:i:n:m: opts
    do
        case $opts in
            c)
                CHANNEL=$OPTARG
                ;;
            i)
                FACEICON=$OPTARG
                ;;
            n)
                BOTNAME=$OPTARG
                ;;
            m)
                MESSAGE=$OPTARG"\n"
                ;;
            \?)
                usage_exit
                ;;
        esac
    done
    #slack 送信チャンネル
    CHANNEL=${CHANNEL:-"#送信するチャンネル名"}
    #slack 送信名
    BOTNAME=${BOTNAME:-"送信するBotの名前"}
    
    if [ -p /dev/stdin ] ; then
        #改行コードをslack用に変換
        cat - | tr '\n' '\\' | sed 's/\\/\\n/g'  > ${MESSAGEFILE}
    else
        echo "nothing stdin"
        exit 1
    fi
    
    WEBMESSAGE='```'`cat ${MESSAGEFILE}`'```'
    
    #Incoming WebHooks送信
    curl -s -S -X POST --data-urlencode "payload={\"channel\": \"${CHANNEL}\", \"username\": \"${BOTNAME}\", \"text\": \"${WEBMESSAGE}\" }" ${WEBHOOKURL} >/dev/null
    

    이 파일을 원하는 곳에 만들자.
    이번에는 /etc/webhook.sh에 작성했습니다.

    기본적으로 파이프로 전달할 수 있는 것은 모두 출력할 수 있어야 합니다.
    아래 명령으로 동작을 확인합시다.
    $ sudo echo test | /etc/webhooks.sh
    

    cron 등록



    cron 등록은 간단합니다./etc 로 이동하여 cron 설정을 엽니다.
    $ cd /etc
    $ sudo crontab -e
    

    cron 설정이 열리면 모든 처리를 작성하십시오.
    이번에는 매시간 vmstatコマンド를 실행하고 싶으므로 아래와 같이 기입하고 :wq
    0 * * * * vmstat | /etc/webhooks.sh
    

    다음 명령을 실행하여 등록이 완료되었는지 확인할 수 있습니다.
    $ sudo crontab -l
    

    좋은 웹페이지 즐겨찾기