かずきち。の日記

サーバサイドエンジニアのつぶやき

【完全自動】自分の管理しているサイトの死活管理ツールを作ってみた!

ウェブサイトが動作しているかのチェックをしたい

たくさんのウェブサイトを運営していると、どのサイトがダウンしたかどうかを管理するのは大変です。
どのサイトが動いていて、どのサイトが落ちているのかを一元管理できたら楽なので、
死活管理ツールを作ってみました。

const URL = 'https://kazukichi0914.hatenablog.com/'; // 監視したいサイトのURL
const EMAIL = '****************@gmail.com'; // エラーを知らせるメールアドレス

function main() {

    if(isUrlDown()) { // サイトが落ちてたとき(メール通知)

        sendMail();

    } else {

        Logger.log('正常に作動しています'); // ログに出力
        MailApp.sendEmail({
        to: EMAIL,
        subject: 'サイトは動作します',
        htmlBody: `
            以下のURLでサイトは動作しています。<hr>
            URL: <a href="${URL}">${URL}</a><br>
            `
    });

    }

}

function isUrlDown() {

    const response = UrlFetchApp.fetch(URL, {
        muteHttpExceptions: true // 例外処理はしないようにする
    });

    return (response.getResponseCode() !== 200); // HTTPステータスコードが、「200」以外はエラーとする

}

function sendMail() {

    const dateTime = Utilities.formatDate(new Date(), 'JST', 'yyyy年MM月dd日 HH:mm');

    MailApp.sendEmail({
        to: EMAIL,
        subject: '【サイトダウン】検知しました',
        htmlBody: `
            以下のURLでサイトダウンを検知しました。<hr>
            URL: <a href="${URL}">${URL}</a><br>
            日時: ${dateTime}
        `
    });

}

とさくっと50行ほどのコードを書いてみました。

このコードを15分に一度、起動

f:id:kazukichi_0914:20210729170510g:plain

15分に一度、サイトのステータスを返します。

f:id:kazukichi_0914:20210729211056j:plain