Open1

CloudWatchメトリクスとアラーム

mocknmockn

CloudWatchアラーム設定

設定項目

CloudWatchアラームの設定には、以下3つの項目の設定が必要になる。

  • 期間
    • メトリクスや式を評価するための一定の時間範囲。
  • Evaluation Periods (評価期間)
    • アラームの状態を評価するための、ある期間から次の期間との間隔。
  • データポイント
    • 評価対象期間内のメトリクスの集計データ

期間が 1 分以上の場合、アラームは 1 分ごとに評価され、評価は [期間] と [評価期間] で定義されている時間枠に基づいて行われます。例えば、[期間] が 5 分 (300 秒) で、[評価期間] が 1 の場合、5 分終了時に、アラームは 1 分~5 分のデータに基づいて評価されます。続いて、6 分終了時に、2 分~6 分のデータに基づいてアラームが評価されます。

次の図では、メトリクスアラームのアラームしきい値が 3 単位に設定されています。
評価期間とデータポイントはどちらも 3 です。つまり、連続する最新の 3 つの期間内の既存のデータポイントすべてがしきい値を上回わると、アラームは ALARM 状態になります。この図では、第 3 期間から第 5 期間にかけてこれが発生します。第 6 期間で値がしきい値を下回り、評価対象の期間の 1 つが超過していないため、アラームの状態は OK に変化します。第 9 期間中のしきい値に再度超過がありますが、1 つの期間のみです。そのため、アラームの状態は OK のままです。

評価間隔は、評価期間の数に期間の長さを乗じて算出されます。たとえば、1 分の期間を持つ 5 個のデータポイントのうち 4 個を設定した場合、評価間隔は 5 分です。10 分の期間を持つ 3 個のデータポイントのうち 3 個を設定した場合、評価間隔は 30 分です。

設定例

パターン1

Lambdaで出力されたErrorログの検知

  • アラーム種別:標準アラーム
  • データ(メトリクスフィルター):Errors (AWSマネージド)
  • データポイント
    • 期間:1分間
    • 閾値:<= 1
  • 評価期間と評価範囲:1/1
    • 1分間のデータポイント一つのうち、閾値を超えるものが一件あればアラーム発報
  • 欠落データの処理:欠落データを見つかりませんとして処理
  • 数式:FILL(m1,0)
    • データの欠落部分を0として補完し「データ欠落時の延伸動作」を回避して「評価期間が過ぎるとすぐに OK 状態に戻る」アラームを設定することができる。

パターン2

Lambdaで出力されたログ中の特定文字列の検知

  • アラーム種別:標準アラーム
  • データ(メトリクスフィルター):検知対象の文字列
  • データポイント
    • 期間:1分間
    • 閾値:<= 1
  • 評価期間と評価範囲:1/1
  • 欠落データの処理:欠落データを見つかりませんとして処理
  • 数式:FILL(m1,0)

データ欠落時の評価の延長

概要

  • データ欠落時の評価では、CloudWatch は [Evaluation Periods (評価期間)] に指定されている数よりも多くのデータポイントを取得しようとする。
  • 結果的に評価期間が延びてアラームが0になるのが想定よりも遅くなることがある。

対応

  • 数式にFILLを利用しデータ欠落箇所を0として埋めることで、余計に評価期間が延長されることを防ぐことができる。

参考

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html
https://blog.serverworks.co.jp/2023/01/16/102254
https://zenn.dev/fdnsy/articles/be0017bdd02420
https://gkzz.dev/posts/metric-alarms-by-multiple-dimensions/
https://dev.classmethod.jp/articles/tsnote-cloudwatch-alarm-does-not-transition-to-ok/
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-evaluating-missing-data
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/using-metric-math.html