Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2811

ログを監視してSlackに通知を送るシェルスクリプト

$
0
0

ログを監視してSlackに通知を送るシェルスクリプトを良く書いたり、誰かに設定してもらうことが多いので健忘録。

1. SlackからIncomming Webhookを作成

https://slack.com/intl/ja-jp/help/articles/115005265063-Slack-%E3%81%A7%E3%81%AE-Incoming-Webhook-%E3%81%AE%E5%88%A9%E7%94%A8

https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/ZZZZZZZZZ
のようなURLを作成する。

2. サーバー上でエラーを検知し、送付するスクリプトを作成

ファイル名を、report.shとして作成。ここでは対象ログを、 cron_daily.logとし、検知する文字列を大文字小文字を無視して errとした。自分用に随時編集のこと。curlで送る内容は、チャンネル名と最後のWebhook URLを変更のこと。

スクリプトの内容としては、エラーログファイルをgrepして対象文字列を含む行がある場合には、Slackに通知するスクリプトとなっている。

#!/bin/bashERROR_CONTENT=`cat cron_daily.log | grep-i err`ERROR_BYTE=`echo$ERROR_CONTENT | wc-c`echo$ERROR_BYTEif[$ERROR_BYTE-gt 1 ];then
  echo"エラーがありました。"
  curl -X POST --data-urlencode"payload={\"channel\": \"#チャンネル名\", \"username\": \"エラーログ報告\", \"text\": \"$ERROR_CONTENT\", \"icon_emoji\": \":bar_chart:\"}" https://hooks.slack.com/services/XXXXXXXXX/YYYYYYYYY/ZZZZZZZZZ
else
  echo"エラーはありませんでした。"fi

3. Cronでエラーログの送信タイミングを設定

chmod a+x report.sh
crontab -e

実行権限をつけてCronを編集するコマンドにて、vim等で編集し、

0 * * * * /home/username/report.sh

のように実行するスクリプトのパスを設定して完了。このCronの設定だと毎時0分にエラーが発生していたらSlackに通知が飛ぶ。

以上。


Viewing all articles
Browse latest Browse all 2811

Trending Articles