[新機能] CloudWatch アラームにデータ欠損/サンプル不足時の評価設定が追加されました

CloudWatch

こんにちは、菊池です。

先日のアップデートでCloudWatchのアラームに2つの設定オプションが追加されました。

追加された設定

追加された設定は以下の2つです。

  • メトリックデータ不足(欠損)時の処理
    • 正常とみなす
    • 異常とみなす
    • 現状を維持する
    • 不明とする(これまでのデフォルト)
  • サンプルが少ないパーセンタイルメトリクスの評価有無
    • 評価する(これまでのデフォルト)
    • 現状を維持する

メトリックデータ不足(欠損)時の処理

CloudWatchのアラームに設定できるメトリックは、カスタムメトリックスを含め非常に多岐にわたります。その通知されるデータの特性によって、アラームに判定する条件も様々です。

EC2のインスタンスに対する CPUUtilization や StatusCheckFailed であれば、インスタンス起動中は連続して通知されるため、任意の閾値でアラームの発生・復旧をコントロールできます。しかし、ELBの HTTPCode_ELB_5XX のような、事象発生時のみ通知される不連続なメトリックスでは、通知発生時にはアラームとすることが可能ですが、何も通知がない状態では「不明」のステータスとなってしまいました。

今回のアップデートにより、通知がない状態を、正常/異常/ステータスを維持、のいずれかに設定できるようになりました。

設定画面は以下のようになります。

cw-alert-option-01

[追加設定]として[欠損データの処理方法]が選択可能になっていますので、[不正]と判定するように設定してみます。

cw-alert-option-02

対象は、停止しているEC2のインスタンスのCPUUtilizationですが、設定した直後にアラームと判定されました。

cw-alert-option-03

[欠落データの処理方法]が[breaching]となっており、[状態の詳細]に欠落データを違反と判定した旨が表示されています。

これを条件を変更し、[適正]に変更します。

cw-alert-option-07

直後にステータスが[OK]となりました。

cw-alert-option-04

このように、処理方法を設定することで、アラーム状態のハンドリングが可能になります。

例えば、ELBの HTTPCode_ELB_5XXのようなメトリックであれば、一時的に発生したエラーの状態を、収束後にアラームとして保持しておくか、正常ステータスに戻すか、運用によって使い分ける事も可能です。

サンプルが少ないパーセンタイルメトリクスの評価有無

今回追加されたもう一つの設定です。

パーセンタイル統計値は、昨年追加されたメトリックの集計方法です。

ELBのレイテンシなどを評価する際に、単純な平均値や最大値では一部の異常値に過剰に影響されてしまうことがあります。そういった場合にパーセンタイル統計値で評価することで、全体の傾向を正確に把握できることがあります。

パーセンタイル統計値でも平均値などと同様に閾値でアラームを設定することが可能ですが、サンプル数が少ない場合には有意な値とならない場合があります。今回のアップデートでは、パーセンタイル統計値をアラーム条件に設定した際に、サンプル数が少ない条件下では評価しないように設定できるようになりました。

評価するか、無視するかの閾値となるサンプル数は10/(1-percentile)で決定されます。

  • パーセンタイル統計値 p50 の場合:10/(1-0.50) = 20 サンプル
  • パーセンタイル統計値 p99 の場合:10/(1-0.99) = 1000 サンプル

実際に設定してみました。

ELBのレイテンシに対し、以下のようなアラームを設定します。

  • 統計には[Custom]、[p50]を使用
  • 間隔は1分
  • レイテンシ1秒以上を1回(1分)超過
  • サンプルが少ないパーセンタイルは無視する

cw-alert-option-06

ある程度のアクセスを発生さた時のパーセンタイル統計p50(左軸)とサンプル数(右軸)です。

cw-alert-option-09

図の①の部分では、アラーム閾値1秒を超過していますが、サンプル数が10/(1-0.50) = 20に満たないため無視されます。一方で②の部分では、サンプル数が20を超えてますのでアラームが発生しました。

また、注意すべきはサンプル数が少なくて無視する場合には、アラームのステータスが継続されることです。上図で19:11の時点でアラーム閾値を下回っていますが、ここでもサンプルが少ないために無視され、アラーム発生状態(異常)が継続します。19:12の時点で、サンプル数も有効になり、正常状態となりました(③)。

まとめ

いかがでしょうか。

2つのオプション設定が追加されたことで、アラート判定の条件を柔軟にコントロールすることが可能になります。アラーム通知は本当に必要な情報を正確に通知することが重要ですので、ありがたいアップデートではないでしょうか。