GASでWebサイトを死活監視してみた

先日、弊社のコーポレートサイトが突如表示されなくなってしまい、原因を調べたところ、 WordPressの自動アップデートの失敗によるものとわかりました。

 

WordPressを使っているWebサイトを実装しているケースはわりと多いと思いますが、急にサイトが見れなくなっていたら一大事ですよね。

 

そこで、Google Apps Script(以下、GAS)を使ってWebサイトの簡易な監視ツールを作ってみたので、紹介いたします。

 

※Googleアカウントさえ持っていれば基本的に無料で対応できます
※今回はSlackへ通知する方法を紹介していますが、通知方法はメール通知やChatwork通知など、ご利用環境に合わせて変更していただければと思います。

 

 

◆ この記事を見ると理解できる内容 ◆

 GASを使ってWebサイトの死活監視ができる

 

 

それでは、さっそく始めていきましょう。

 

 

必要な流れと内容

全体の流れとしては、GASで監視対象のWebサイトURLへ自動でアクセスし、HTTPステータスコードを取得します。

取得したステータスコードが「200」以外の場合にSlackへ通知する、といった流れになります。

 

※ステータスコードが200であれば表示が正常という意味になります。
詳しくは「ステータスコード」で検索してみてください。

 

① GASでプロジェクト作成し、コードを準備する

 <必要なもの>

  1. Googleアカウント

 

GASの画面へアクセスし、「新しいプロジェクト」を作成する

無題のプロジェクトとなっているところを自分でわかりやすい名前に変更する

 

コード.gs の中に最初から記入されている内容を削除し、以下のコードをコピペする


function fetch() {

  var url = 'https://example.com/'    // 監視したいURLを指定する

  var options = {
    muteHttpExceptions: true
  };
  
  var response;
  try {
    // Makes a request to fetch a URL.
    response = UrlFetchApp.fetch(url, options);
  } catch (e) {
    // DNS error, etc.
    return;
  }
  
  // Get the HTTP status code (200 for OK, etc.) of an HTTP response.
  var code = response.getResponseCode();
  
  // 取得したステータスコードを出力
  console.log(code);

  // ステータスコードが200以外だったら指定のSlackチャンネルへ通知する
  if(code !== 200) {
    slackNotice(code)
  }
}


//===================================
// 取得した投稿内容をSlackへ通知する
//===================================
var postUrl = 'https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';  //通知先となるSlackチャンネルのIncoming Webhook URL
var username = 'Webサイト監視中';  // 通知時に表示されるユーザー名
var icon = ':bangbang:';  // 通知時に表示されるアイコン

function slackNotice(code) {

  let jsonData =
  {
    "username" : username,
    "icon_emoji": icon,
    // "text" : "<!here>" + message2
    "text" : "<!channel>" + "\n" 
               + "HTTPステータスコード: " + code + "\n\n" 
               + "【要確認】Webサイトにエラーが発生している恐れがあります。" + "\n"  //好きな文言に変更してください
               + url
  };
  var payload = JSON.stringify(jsonData);

  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };

  UrlFetchApp.fetch(postUrl, options);
}

 

入力したコードを保存し、実行をクリック

 

初回実行時のみ、権限の承認をする

 

 

② トリガーを設定する

トリガーは、いわゆるタイマー機能のようなものです。
設定したタイミングで自動的にコードを実行する、つまりWebサイトの状態を確認します。

※タイミングは、週1回、毎日、数時間おき、など、GASに標準でいくつか用意されているので、好きなタイミングを設定する

 

 

大規模サイトなどであれば予算を取って精度の高い監視ツールを導入することが一般的ですが、
中規模〜小規模サイトの場合は、そういった運用保守の予算を取っていないケースも多いと思います。

 

 

 

今回紹介した方法を使えば、比較的簡単に監視ツールを導入することができるため、
ご参考になれば幸いです。

 

 

スプレッドシートやGASではカバーしきれなくなってきた時は、専用の業務システムを作るほうが効率的です。kikantreeは中小企業向けの業務システムパッケージのため、ある程度コストも抑えつつ、必要な機能だけを使うことができます。ぜひお気軽にお問い合わせください!
https://kikantree.jp

 

 

この記事が良かったら共有してください。