LoginSignup
14

More than 5 years have passed since last update.

LambdaでWebを監視して、CloudWatchにログ連携してアラートメールを出す

Last updated at Posted at 2018-05-06

全体の流れ

大まなか流れは以下の感じでしょうか。

  • Lambdaを書く(テストしてログの連携を確認する)
  • CloudWatchのルール設定(Lambda関数が定期実行されるようにする)
  • CloudWatchでメトリクス設定(ログ中のError文字列を検出する)
  • CloudWatchでアラート設定(メールで通知する)

監視と通知の仕様

Lambda関数で特定のURLにリクエストを投げ、statusCodeが200ならOK、それ以外ならErrorとする。
Errorの場合はメールに通知する。

Lambdaを書く

まず、Lambda関数を用意します。

Webの監視コードを書く

webStatusCheckという名前で関数を作成します。

http/httpsモジュールは標準で使えるので、それを利用します。単に、リクエストを投げて、statusCodeを取得しているだけ。

index.js
const https = require('http');

exports.handler = (event, context, callback) => {

    //URL
    var url = 'http://www.bluecode.jp/lambda/';

    const req = https.request(url,(response)=>{

        //statusCode取得
        var code = response.statusCode;

        if(code == 200){
            //OK
            console.log("OK " + code);
        }else{
            //Error
            console.log("Status Error " + code)
        }
    });

    //リクエスト自体がエラー
    req.on('error',(error)=>{
        console.log("Fatal Error "+error.message);
    });

    req.end();

};

複雑なことをやりたければ、レスポンスをパースするなどして、もっと詳細なステータスを見ればよいでしょう。

CloudWatchとの連携

console.log("")で出力するだけで、CloudWatchに連携されるので特に何もすることはありません。
[テスト]をして、ログがCloudWatchに出力されていることを確認しておきます(下記は正常と異常時のチェックをしています)。

001.png

なお、Lambdaのコードが変わると、ログのストリームが変更されるので注意が必要です。

ルール・メトリクス・アラームの設定

ルールの設定

では、まずルールの設定を行います。
先ほど作成したLambda関数を1分毎に実行するように設定します。

002.png

メトリクスの設定

次にメトリクスの設定をします。
メトリクスはログに対して設定するため、ログのメニューから[メトリクスフィルタの作成]を選択して作成します。

003.png

ここではログに"Error"という文字列が含まれていたら反応するメトリクスを設定します。

004.png

正規表現などは利用できないようです。

アラームの設定

メトリクスの作成途中で、アラートも設定します。

005.png

Errorが起こるとしきい値が1となるようなので、条件を >0 と設定し、欠落データの処理方法を[適正]とします。
更に間隔を1分間隔に、エラー発生時の通知先を設定します。

メールは新規の場合、確認メールが送られるようなのでConfirmする必要があります。

006.png

設定が終われば監視がスタートします。

最初は[不足」となっていますが、しばらく立つとOKになります(適正と設定したので)。

007.png

アラームのテスト

一通り設定が完了したのでテストをしてみます。

監視先URLのファイルを削除してみます。
アラートが検出されました。

008.png

メールも届きました。

009.png

障害が復旧した場合、自動的に元に戻るようです。

010.png

以上。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14