1
1

CloudWatchMetricsの基本的な操作とアラーム設定方法

Posted at

はじめに

CloudWatch MetricsとAlarmは運用を基礎から支える大事なサービスだと思います。
前から気になっていたので、基本的な操作を確認しました。

各サービスの概念などはBlackBeltを参考にし、この記事ではマネコンでの操作をメモできればと思います。

CloudWatch Metrics

早速CloudWatch Metricsを触ってみます。
今回はlambda関数を実行することで自動収集されるメトリクスを利用して、
関数のエラー率、処理時間のMAX,MIN,AVGなどをグラフ化してみようと思います。

lambdaサンプル
index.js
exports.handler = async (event) => {
    // 基本の2秒待機
    await new Promise(resolve => setTimeout(resolve, 2500));

    // ランダムで最大1秒の追加待機時間
    const additionalWait = Math.random() * 1000; // 0から1000ミリ秒(1秒)のランダムな値
    await new Promise(resolve => setTimeout(resolve, additionalWait));

    return {
        statusCode: 200,
        body: 'Hello from Lambda!'
    };
};
index.js
exports.handler = async (event) => {
    return {
        statusCode: 200,
        body: 'Hello from Lambda!'
    };
};
index.js
exports.handler = async (event) => {
    throw new Error('アラーム検知テスト');
};

lambda関数のエラー率を計測する

マネコンからMetricsへアクセス

CloudWatchページからアクセスします。

cap1.PNG

計測したいメトリクスをグラフ表示させる

+、-ボタンをクリックすることで任意のメトリクスをフィルターできます。

cap2.PNG

作成したlambdaのメトリクスを選択します。

グラフを確認してみる

エラー率を確認するために、まずは全体実行数を表示させます。

cap3.PNG

作成したlambdaの「invocations」メトリクスを選択し、グラフ表示させました。
5回起動されたことが分かります。

他のメトリクスをグラフ上に表示する

同様に、エラーの数もグラフ上に同時に表示してみます。
メトリクスから、エラーの数を計測している「Errors」を選択します。

cap4.PNG

グラフ上に「invocations」「Errors」が同時に表示されました。
次はこれらの数をinputに、エラー率を計測してみます。

タブを切り替える

メトリクスを組み合わせて新たなメトリクスを表示させるには、数式機能を使います。

cap5.PNG

「グラフ化したメトリクス」タブに移動します。

数式を追加する

今回はエラー率を表示してみたいので、「Errors/invocations」の結果を表示させます。

cap6.PNG

数式を追加 > 一般 > パーセンテージ を選択します。

cap7.PNG

新たに「式1」と書かれたメトリクスが表示されました。

数式を修正する

数式の内容が「invocations/Errors」になっているので修正します。

cap8.PNG

鉛筆マークから修正を行います。

ラベルなどを整える

ラベルなども変更できるため適宜修正します。

cap9.PNG

良い感じにエラー発生確率を確認できるグラフが完成しました!

lambda関数の処理時間を計測する

処理時間を取得する

続いて、処理時間のMAX,MIN,AVGを取得してみようと思います。

cap10.PNG

処理時間メトリクスである「Duration」をグラフ表示した後、
複製ボタンをクリックします。

統計属性を変更する

統計タブを変更し、DurationのMAX,MIN,AVGをそれぞれ表示してみました。

cap11.PNG

このように、一つのメトリクスでも、統計によってさまざまなデータのとり方ができることが確認できました。

グラフを保存する

メトリクスのグラフは、このままでは保存されません。
設定した内容を保存するためには、ダッシュボードにグラフを追加する必要があります。

cap12.PNG

アクション > ダッシュボードに追加 を選択します。

ダッシュボードを作成する①

ダッシュボードが存在しない場合、新規作成を行います。

cap13.PNG

新規作成をクリックします。

ダッシュボードを作成する②

必要な項目を入力します。名前だけのようです。

cap14.PNG

作成をクリックします。

ダッシュボードに追加する

その他、適当に選択します。

cap15.PNG

問題ない場合、「ダッシュボードに追加」をクリックします。

追加されたグラフを確認する

CloudWatch > Dashboards > 作成したダッシュボードへと遷移し、グラフが保存されていることが確認できます。

cap16.PNG

Amazon CloudWatch Alarm

メトリクスをもとにリソースやプロダクトを監視し、問題がある状態と判断された場合、
Amazon CloudWatch Alarmを使用することで、SNSなどにアラートを上げることができます。

これも重要な機能なのでさわってみます!

特定状況でSNSへアラートを通知する

今回は、特定のスパン内に、lambdaのエラーが連続した場合、
アラートを発砲させるようなAmazon CloudWatch Alarmを作成してみます。

アラームを作成する

CloudWatch > アラーム から、「アラームの作成」を選択します

cap17.PNG

メトリクスを選択する

cap18.PNG

メトリクスの選択をクリックします。

cap19.PNG

メトリクス画面と同様のUIが立ち上がります。
グラフ作成時と同様に、メトリクスを選択します。

cap37.PNG

今回はlambdaの「Errors」を選択しました。

データポイント

Amazon CloudWatch Alarmは、データポイントという単位で、一定期間のメトリクスを集計します。

データポイントには統計方法と期間が設定されており、メトリクスの集計値は、この統計方法と期間によって決定します。

例えば、統計方法が平均値、統計期間が5分の場合、
あるデータポイントの集計値は、最初のメトリクスが届いてから5分間に届いたすべてのメトリクスの平均値、ということになります。

データポイントは、「計測中のデータポイントが存在しない状態でメトリクスが届いてから作成される」ことに注意です。
publishされる頻度の低いメトリクスの場合、データポイントが新たに作られず、アラームの評価が変更されない状況が続く可能性があります。

アラームの条件を指定する

アラームはそれぞれ以下のような設定にしました。

cap20_0.PNG

  • 統計 : 最小
    データポイント内のデータをどう統計するか?を設定します。
    今回はエラーの数は考慮しないため、最小を選択しています。

  • 期間 : 一分
    データポイントの統計収集期間を設定します。

  • 条件 : 1以上
    データポイントとしきい値との比較条件です。
    データポイントが1以上の場合、条件が満たされていると判断されます。

  • アラームを実行するデータポイント : 2/2
    直近のデータポイント2つを確認し、
    2つともアラーム条件を満たしている場合、アラームが実行されるように設定しています。

設定後、「次へ」ボタンをクリックします。

アラーム状態をSNSトピックに送信する

アクションの設定画面になります。

cap21.PNG

通知の送信先から、適当なSNSトピックを選択します。

SNS以外にも連携できます。

cap22.PNG

今回はスルーします。

アラーム名とdescriptionを記入

任意の値を記入します。

cap23.PNG

「次へ」をクリックします。

設定内容を確認し、リソースを作成する

設定内容を確認します。

cap24.PNG

「アラームを作成」をクリック

マネコンからアラームを確認する

cap25.PNG

CloudWatch > アラーム から確認できます。

動作を確認する

lambdaを実行し、正常終了やエラーを発生させてみます。

cap31.PNG

エラーのCountが1上がっているが、1/2状態なので、OKである期間が確認できます。

cap32.PNG

エラーが続くと2/2を満たしアラーム状態になることも確認できました。

おわりに

CloudWatch メトリクスとアラームに挑戦してみました。
まだまだ初歩的な使い方しかしていませんが、雰囲気は掴めたと思います。

実運用でも使いそうで、わくわくします。

1
1
0

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
1
1