簡易的にWebサーバーを監視して、停止時にSlackに投稿する
GoogleAppsScript Slack httpd slackbot JavaScript
概要
Webサーバーが落ちていないかを簡易的に監視するツールをGASで作成。 Dockerのコンテナで複数サーバーを運用しているが、別コンテナでSeleniumを動かしていたため、最近の話だがメモリ不足でサーバーが半日ほど停止し、検索順位が大幅に落ちるという恐怖を味わったので、GASに監視を代行させる。
事前準備
- SlackのAPIキーを取得する
- Slackのチャンネルにserver-monitorを追加する
- GASのトリガーを、5分から15分くらいに設定する
ソースコード
- UrlFetchApp.fetch(url)でソースを取得
- try-catchによりエラーを捕捉()
- エラー捕捉時、スラックに投稿する
function myFunction() { var url = 'WebサーバーのURL'; try{ UrlFetchApp.fetch(url); Logger.log('Success'); }catch(e){ postSlack('server-monitor', 'httpd-server-monitor', 'ウェブサーバーが障害により停止している可能性があります。 \n' + url); Logger.log('Failure'); } } function postSlack(channelname, username, message){ //Get channels var slackApp = SlackApp.create('APIキー'); var channels = slackApp.channelsList().channels; Logger.log(channels); //Channel check var channel = null; channels.forEach(function(v, i){ if(v.name == channelname){ channel = v; } }); //Post Message slackApp.postMessage(channel.id, message, { username : username }); }
補足
あくまで簡易的なので、アクセス集中時のエラーページなどの判定は行わない。