BLOGTIMES
2018/04/13

log を常時監視して slack にポストする

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

以前、「snmptrapd の通知を Slack に飛ばす」というのをやりましたが、ファイルを tail -f で監視しておいて、特定の文字(例えば [ERROR])が来たらそれを Slack で通知するというシェルスクリプトを組んでみました。

ベースがあるとあっという間にできますね。
いろいろオプションがついてしまっていますが、基本的にはバッファリングさせないようにするものです

#!/bin/bash SCRIPT_DIR=`dirname $0` cd $SCRIPT_DIR # ログとgrepの設定 LOGFILE="/path/to/log/file" GREP_RULE="[ERROR]" # Slack通知の設定 SLACK_WEBHOOKURL="(slackのWebHookURL)" SLACK_CHANNEL="(slackのチャネル)" SLACK_BOTNAME="(slackの投稿者名)" SLACK_FACEICON=":raising_hand:" tail -n0 -F "$LOGFILE" | grep --line-buffered "$GREP_RULE" | while read LINE ; do # slack notification WEBMESSAGE='```'`echo $LINE | 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 done

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

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

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

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