WebサーバのエラーログをSlackに投稿してみた

★★★ Live配信告知 ★★★

Azureでクラウドネイティブな開発をするための方法について、世界一わかりみ深く説明致します!!複数回シリーズでお届けしている第8回目は、「次世代サーバーレスアーキテクチャDurable Functions」と題しまして、サーバーレスアーキテクチャのさらに次を行くAzureのサービス「Durable Functions」を扱います!!
【2021/11/26(金) 12:00〜13:00】

この記事ではApache httpdサーバのApacheエラーログとPHPエラーログをSlackに投稿する方法をまとめました。

やりたいこと

当サイトをWebサーバで運用するにあたり、健全性を保つには定期的にログを確認する必要があります。しかし、毎日サーバに接続してコマンドを実行して内容を確認するのは大変です。そこで、内容チェックは手動でやるにしても、ログの表示までの手順を簡略化しようと思い実装しました。エラーログの内容をSlackに投稿することで、Slackを見るだけでエラーの内容を確認できるようにします。

Slack AppでWebHookのリクエストを待ち受け、サーバのスケジューラでリクエストを送信するスクリプトを実行します。

実装

Slackの設定

Slackのアプリから[App]をクリックします。

 

検索ツールで[webhook]で検索します。検索結果に表示される[Incoming WebHook]の[追加]をクリックします。

 

ブラウザのslackのアプリのページに遷移します。設定により権限が必要な場合があります。その場合は[設定をリクエストする]より管理者にリクエストを送信します。

 

リクエストが承認されるとSlackbotから以下のような通知がきます。[App ディレクトリに移動する]をクリックします。

 

ブラウザのSlackのアプリの設定ページに遷移します。[Webhook URL]をコピーし、後述のスクリプトに貼り付けます。

シェルスクリプト

以下はスクリプトの一例です。

[webhookURL]を先程コピーしたURLに置換します。USERNAMEはbotの表示名、 CHANNELは送信先チャンネル、 ICONはbotのアイコンを設定します。TEXTを書き換えることで送信メッセージを編集できます。

WebHookでは、curlを使ってbotのURLにPOSTします。

スケジューラ

上記スクリプトを定期的に実行するためにcronによるスケジューリングを設定します。下記の例では毎朝9:00に実行します。

 

以上です。

注意点ですが、上記スクリプトはログの容量が大きすぎるとARG_MAXを超えてしまい、curlを実行できない場合があります。ARG_MAXを増やすか、エラーを修正してログ容量を減らす必要があります。スクリプトを修正すべきそもそも表示しきれない程の大量のエラーが出ている状態は良くないのでエラーを修正することをお勧めします。





ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*