BLOGTIMES
2016/12/28

snmptrapd の通知を Slack に飛ばす

  Tips sh  systemmanagemant  slack  esxi 
このエントリーをはてなブックマークに追加

最近使い始めた Slack が便利なので、snmptrapd の通知を WebHook を使って Slack に飛ばすようにしてみました。
snmptrapd の通知を Slack へ - snmptrapd の通知を Slack に飛ばす

設定方法

[10分で出来る]シェルスクリプトの結果をslackに投稿 - Qiitaを参考に「続・ESXi の状態変化をメールで受け取る」で書いたスクリプトを以下のようにちょっと改良してみました。

/etc/snmp/traphandle.sh

#!/bin/bash TMP_FILE="/tmp/snmptrapd_$$" BLACKLIST_FILE="/etc/snmp/blacklist" # メール通知の設定 MAIL_FROM="from@example.com" MAIL_TO="to@example.com" MAIL_SMTP="smtp.example.com" # Slack通知の設定 SLACK_WEBHOOKURL="(slackのWebHookURL)" SLACK_CHANNEL="(slackのチャネル)" SLACK_BOTNAME="(slackの投稿者名)" SLACK_FACEICON=":raising_hand:" trap 'rm "$TMP_FILE"' 0 while read LINE; do echo $LINE >> $TMP_FILE done cat $TMP_FILE | grep "SNMPv2-MIB::snmpTrapOID" | grep -v -f "$BLACKLIST_FILE" 2>&1 >/dev/null BLACKLISTED=$? if [ $BLACKLISTED -ne 1 ] ; then # mail notification cat $TMP_FILE | /usr/bin/traptoemail -f $MAIL_FROM -s $MAIL_SMTP $MAIL_TO # slack notification WEBMESSAGE='```'`cat $TMP_FILE | sed 's/"/\\\\"/g' `'```' curl -s -S -X POST --data-urlencode "payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${SLACK_BOTNAME}\", \"icon_emoji\": \"${SLACK_FACEICON}\", \"text\": \"${WEBMESSAGE}\" }" ${SLACK_WEBHOOKURL} >/dev/null fi

テストは snmptrap が動いているサーバ上で以下のコマンドを実行することで行えます。

snmptrap -IR -v 2c -c public localhost '' netSnmp.99999 netSnmp.99999.1 s "Test smtptrap!"

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/9040
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン