おれんじりりぃぶろぐ

きっと何者にもなれないエンジニアのブログ

gasを使ったお手軽サーバー死活監視

概要

超お手軽にWebサーバーの死活監視をしてchatworkに通知する方法です。

なぜgasなのか(・・?)

何と言っても死活監視のスクリプトをcronするサーバーを用意しなくて済むからです。chatworkへの通知も非常にお手軽に実装することが可能です。 高度なことはできませんが、雑に死活監視するくらいであればgas環境でも十分です。

手順

ドライブの「新規作成」->「その他」->「Goggle Apps Script」を選択します。 スクリーンショット 2018-03-15 2.30.09.png (142.2 kB)

「リソース」->「ライブラリ」からChatworkClientを導入します。 スクリーンショット 2018-03-15 2.07.11.png (63.6 kB)

ライブラリを追加のところに「M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT」を入力します。

いい感じにスクリプトを書きます。

var siteURL = "http://xxxxxxxx.com"; // チェックしたいサーバーのURL
var Token = "xxxx"; // chatworkのbot token
var RoomId = xxxx; // 通知したい部屋のID

function myFunction() {

  try {
    // URLをフェッチ - muteHttpExceptions:trueの場合、HTTPエラーの際に例外をスローしない
    var response = UrlFetchApp.fetch(siteURL, { muteHttpExceptions:true });
    // レスポンスコード
    var code = response.getResponseCode();

    // レスポンスコード 200をチェックする
    if(code == 200) {
        Logger.log("access OK");
        Logger.log("Response code: " + code);
    } else {
        var mes = "[info][title]死活監視[/title][To:xxxx]\nhogehogeが落ちています[/info]";
        Logger.log(mes);
        var client = ChatWorkClient.factory({token: Token});
        client.sendMessage({room_id: RoomId, body: mes});
    }
  } catch(err) {
    // catch : DNSエラーなどでURLをfetch出来ないとき
    var mes = "[info][title]死活監視[/title][To:xxxx]\nhogehogeにアクセスできません[/info]";
    Logger.log(mes);
    var client = ChatWorkClient.factory({token: Token});
    client.sendMessage({room_id: RoomId, body: mes});
  }
}

トリガーを設定します。 「編集」->「現在のプロジェクトのトリガー」->「新しいトリガーを追加」から設定します。 スクリーンショット 2018-03-15 2.17.24.png (55.7 kB)

あとは、サーバーが落ちるのを楽しみに待つだけです٩( ‘ω’ )و