slackにmunin連携を追加
Page content
Icingaに続き、muninもslackに通知ができるように頑張ってみた。というかあまり頑張らず、世の中にある通知スクリプトでSlackのIncoming WebhookにPOSTでJSONを送るだけだった。超簡単。 ちなみにslackの連携(Slack Integration)についてはここがとてもわかり易かった。
実装
- Slack Incoming Webhook を有効化。APIのURLを確認。
- このgoodな解説を基に実装。
- gist から持ってくる
slack_munin.sh
は/usr/local/munin/bin/
の下に設置した。
Url to link from slack notifications
MUNIN_URL=“https://host.example.com/munin/" input=cat
#Set the message icon based on service state if [ “$MUNIN_SERVICESTATE” = “CRITICAL” ] then ICON=":exclamation:” COLOR=“danger” elif [ “$MUNIN_SERVICESTATE” = “WARNING” ] then ICON=":warning:" COLOR=“warning” elif [ “$MUNIN_SERVICESTATE” = “ok” ] then ICON=":white_check_mark:" COLOR=“good” elif [ “$MUNIN_SERVICESTATE” = “OK” ] then ICON=":white_check_mark:" COLOR=“good” elif [ “$MUNIN_SERVICESTATE” = “UNKNOWN” ] then ICON=":question:" COLOR="#00CCCC" else ICON=":white_medium_square:" COLOR="#CCCCCC" fiGenerate the JSON payload
PAYLOAD="{"channel": "${SLACK_CHANNEL}", "username": "${SLACK_USERNAME}", "attachments": [{"image_url": "${MUNIN_IMAGE}", "color": "${COLOR}", "fallback": "Munin alert - ${MUNIN_SERVICESTATE}: ${MUNIN_SERVICE} on ${MUNIN_HOST}", "pretext": "${ICON} Munin alert - ${MUNIN_SERVICESTATE}: ${MUNIN_SERVICE} on ${MUNIN_HOST} in ${MUNIN_GROUP} - <${MUNIN_URL}|View Munin>", "fields": [{"title": "Severity", "value": "${MUNIN_SERVICESTATE}", "short": "true"}, {"title": "Service", "value": "${MUNIN_SERVICE}", "short": "true"}, {"title": "Host", "value": "${MUNIN_HOST}", "short": "true"}, {"title": "Current Values", "value": "${input}", "short": "false"}]}]}" #Send message to Slack curl -sX POST -o /dev/null –data “payload=${PAYLOAD}” $SLACK_WEBHOOK_URL 2>&1- `/usr/local/munin/etc/munin.conf` にはそれを参照するように設定した。 - ちなみに画像を参照する `image_url` については、おれおれSSL証明書でやってるhttpsだとだめだったので、httpにしました。ちゃんとしたSSL証明書で作れば大丈夫だと思うけど未検証。 - アドバイス通り `munin.conf` で一時的に `contact.slack.always_send warning critical ok` という風に "ok" を含むようにして通知のテストを。 - 当然なんですが、 `slack_munin.sh` は executable にしておくこと!
- gist から持ってくる
- 出来上がると、こんな感じでグラフ付きで通知をくれる。
今後
- 各pluginのしきい値の調整をして、実際に監視に役立てる(Muninを思い出すところから…)
- グラフをslackに貼り付けることができるが、それがworkしているか確認 -> ここを参照しながら