1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2020-03-25

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

1. SlackからIncomming Webhookを作成

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

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

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

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

# !/bin/bash

ERROR_CONTENT=`cat cron_daily.log | grep -i err`
ERROR_BYTE=`echo $ERROR_CONTENT | wc -c`

echo $ERROR_BYTE

if [ $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に通知が飛ぶ。

以上。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?