業務でWebサイトを構築すると大抵サービスの監視を行います。
ほとんどの場合は会社のネットワーク内に監視サーバーがあると思いますが、外部ネットワークのエラーによる不通は把握できないかと思います。
なので、ネットワーク障害に備えて外部からも監視をしたいところです。
調べるとどうやらGoogle Apps Scriptを使うとサーバーを用意したりせずに手軽に出来そうです。
ネット上にあるサンプルだとレスポンスコードをチェックするスクリプトが多かったですが、レスポンスは正常でもコンテンツに問題が発生するケースもあります。
そこで、コンテンツの中身をチェックするスクリプトを作成しました。
function doCheck() { var mailaddress = "(メールアドレス)"; var hosts = [ { "url" : "http://example.com/", "mail" : mailaddress, "subject" : "[GAS_Alert] http://example.com/ is down!" } ]; for (var index in hosts) { var host = hosts[index]; var res = UrlFetchApp.fetch(host['url']); var str = res.getContentText(); if ( str.indexOf("Example") == -1) { var now = new Date(); var now_str = now.getFullYear() + "/" + (now.getMonth() + 1) + "/" + now.getDate() + " " + now.getHours() + ":" + now.getMinutes(); MailApp.sendEmail(host['mail'], host['subject'], "Check Date: " + now_str + "\n" + "Check Site: " + host['url'] + "\n" + "-----\n" + res.getContentText(), { "bcc": "", "replyTo": "(メールアドレス)", }); } } }
これを[リソース]-[現在のプロジェクトのトリガー]から定期実行するようにすれば死活監視の出来上がりです。
※複数のサービスを一括して監視できるように作りましたが、実行感覚が短かったり監視対象が多すぎるとAPIのリクエスト過多でエラーになるようです。