[アップデート] CloudWatch Metricsでトリム平均がサポートされました

2021.07.30

しばたです。

先日CloudWatch Metricsの統計処理で新たにトリム平均がサポートされました。
AWSからのアナウンスはこちら。

本記事では簡単にですがこの更新について解説します。

トリム平均のサポートについて

CloudWatch Metricsではメトリクスとして記録されたデータポイントの値をそのまま使うのではなく、平均、最大、最小、合計などいった各種統計処理を行った値を使うのが基本です。
今回の更新はこの統計処理にトリム平均が追加された形となります。

トリム平均は外れ値の除去を目的として、最小値または最大値からの特定の比率のデータを除外した上での平均値となります。
CloudWatch MetricsにおいてはtmまたはTMを使った以下の記法がサポートされています。

  • tm90 : 上位10%を除外したデータを対象としたトリム平均を取得
  • TM(10%:90%) : 下位10%と上位10%を除外したデータを対象としたトリム平均を取得
    • TM(:90%) : tm90と同じ
  • TM(150:1000) : データポイントの値が 150 - 1000 のものから平均を取得

今回の更新と同時かは未確認なのですが、トリム平均と関連する統計値として

  • TC : Trimmed count。特定比率のデータを除外した後のデータポイント数
  • TS : Trimmed sum。特定比率のデータを除外した後の合計値
  • WM : ウィンザライズド平均
  • IQM : 四分位範囲(IQR)の平均。TM(25%:75%)と同じ

も存在しています。
それぞれの統計値のより具体的な解説については以下のドキュメントを参照してください。

確認してみた

ちょっと適切な例かは怪しいのですが、簡単なサンプルを使いトリム平均の値を確認しています。

上図はとあるALBのTargetResponseTimeの5分ごとの値です。
このALBでは基本的には直ちに応答を返しているのですが、稀に応答に時間がかかることがあります。

上図の場合、メトリクスとしては

  • 5分間での最大値 (Maximum) は 約3.8秒
  • 5分間での99パーセンタイル値 (p99) は 約0.004秒

と、99%のデータが0.004秒以内に応答していることがわかります。
それでも最大約3.8秒となる外れ値があるため、全データの平均値は

  • 5分間での全データの平均値 (Average) は 約0.03秒

と99パーセンタイル値より一桁増えてしまっています。
ここで上位1%を除外したトリム平均を取得してみると

  • 5分間での上位1%を除外したトリム平均 (tm99) は 約0.001秒

となり、外れ値の影響が無くなっていることが見て取れます。

最初に述べた様にこれが適切な例かは怪しいです...正直なところ適切なサンプルを思いつきませんでした。
ただ、トリム平均がどういったものか、CloudWatch Metrics上どう表示されるかはご理解いただけたと思います。

トリム平均を使うべきメトリクスは何か?どの程度の比率を外れ値として除外すべきかはデータ次第ですのでその点は利用に際し注意が必要です。

補足 : マネジメントコンソールでの指定方法について

マネジメントコンソールから統計値を指定する際に、画面の「▼」欄をクリックして選択する場合はtm99しか選択できませんが、

その隣の編集ボタンをクリックすると自分で好きな統計値を入力することができます。

(この図ではtm95に手で編集している)

用途に応じて好きな値を指定する様にしてください。

最後に

簡単ですが以上となります。
シンプルな更新ですが利用用途は多岐にわたると思いますので必要に応じて使ってみてください。