Amazon CloudWatch
ユーザーガイド

Metric Math を使用する

Metric Math により複数の CloudWatch メトリクスをクエリし、数式を使用して、これらのメトリクスに基づく新しい時系列を作成できます。作成された時系列を CloudWatch コンソールで視覚化でき、ダッシュボードに追加できます。AWS Lambda メトリクスの使用例として、[Errors] メトリクスを [Invocations] メトリクスで割り、エラーレートを算出して、作成された時系列を追加して CloudWatch ダッシュボードでグラフ化できます。

GetMetricData API オペレーションを使用して、Metric Math をプログラムで実行することもできます。詳細については、「GetMetricData」を参照してください。

CloudWatch グラフに数式を追加する

CloudWatch ダッシュボードのグラフに数式を追加できます。各グラフは、最大 100 個のメトリクスおよび式に制限されているため、グラフのメトリクスが 99 個以下の場合のみ数式を追加できます。

グラフに数式を追加するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. グラフまたは行ウィジェットを作成または編集します。

  3. [グラフ化したメトリクス] を選択します。

  4. [Add a math expression] (数式の追加) を選択します。式に新しい行が表示されます。

  5. [詳細] 列で、数式を入力します。次のセクションにある表には、数式で使用できる関数の一覧が表示されています。

    メトリクスまたは別の数式の結果をこの式で式の一部として使用するには、[Id] 列に表示される値を使用します (例: [m1+m2] または [e1-MIN(e1)])。

    [Id] の値は変更できます。数字、文字、アンダースコアを含めることができ、小文字で始める必要があります。[Id] を意味のある名前に変更すると、グラフをより容易に理解できます (例: [m1] や [m2] から [エラー] や [リクエスト] に変更)。

  6. 数式の [ラベル] 列に、数式の計算内容を表す名前を入力します。

    式の結果が時系列の配列である場合、これらのそれぞれの時系列が、異なる色の別々の線で表示されます。グラフのすぐ下には、グラフの各行の凡例があります。複数の時系列を作成する単一の式の場合、これらの時系列の凡例のキャプションは、式ラベル メトリクスラベル の形式になります。たとえば、ラベルが Errors であるメトリクスと、ラベルが Filled With 0: である FILL(METRICS(), 0) 式がグラフに含まれる場合、凡例の 1 つの行は Filled With 0: Errors となります。凡例で元のメトリクスラベルのみ表示されるように、式ラベルは空に設定します。

    1 つの式により、グラフの時系列の配列が作成される場合、これらの各時系列に使用される色を変更することはできません。

  7. 必要な式を追加した後、必要に応じて、元のメトリクスの一部を非表示にすることで、グラフを簡素化できます。メトリクスまたは式を非表示にするには、[Id] フィールドの左にあるチェックボックスをオフにします。

Metric Math 構文と関数

以下のセクションでは、Metric Math で使用できる関数について説明します。すべての関数は大文字で記述する必要があります ([AVG] など)。また、すべてのメトリクスと数式の [Id] フィールドは小文字で始める必要があります。

数式の最終結果は単一の時系列または時系列の配列である必要があります。一部の関数では、スカラー番号が生成されます。より大規模な関数の中でこれらの関数を使用することができ、最終的には時系列が生成されます。たとえば、単一の時系列の [AVG] はスカラー数を生成するため、最終的な式の結果にはなりません。しかし、それを関数 [m1-AVG(m1)] で使用して、個々のデータポイントとそのデータポイントの平均値の間の相違の時系列を表示できます。

データタイプの略語

一部の関数は、特定のタイプのデータのみに有効です。次のリストにある略語は、関数のテーブルで使用され、各関数でサポートされているデータタイプを表しています。

  • [S] は、スカラー数 (2、-5、または 50.25 など) を表します。

  • [TS] は時系列 (時間の経過に伴う単一の CloudWatch メトリクスの一連の値) です。たとえば、過去 3 日間のインスタンス i-1234567890abcdef0 の [CPUUtilization] メトリクスなどです。

  • [TS[]] は時系列の配列です (複数のメトリクスの時系列など)。

METRICS() 関数

METRICS() 関数は、リクエストのすべてのメトリクスを返します。数式は含まれません。

より大きな式の中で METRICS() を使用することができ、最終的には単一の時系列または時系列の配列が生成されます。たとえば、SUM(METRICS()) 式は、グラフ化されたすべてのメトリクスの値の合計である時系列 (TS) を返します。METRICS()/100 は時系列の配列を返します。それぞれが、いずれかのメトリクスを 100 で除算した各データポイントを示す時系列です。

[METRICS()] 関数を文字列と使用して、[Id] フィールドにその文字列を含むグラフ化されたメトリクスのみを返すことができます。たとえば、SUM(METRICS("errors")) 式は、[Id] フィールドに「errors」のあるグラフ化されたすべてのメトリクスの値の合計である時系列を返します。また、[SUM([METRICS(“4xx”), METRICS(“5xx”)])] を使用して、複数の文字列を一致させることができます。

基本的な算術関数

サポートされている基本的な算術関数の一覧を以下の表に示しています。時系列で欠落した値は 0 として扱われます。データポイントの値により関数がゼロ除算を行おうとする場合、データポイントは削除されます。

オペレーション 引数

算術演算子: + - * / ^

S, S

S, TS

TS, TS

S, TS[]

TS, TS[]

PERIOD(m1)/60

5 * m1

m1 - m2

SUM(100/[m1, m2])

AVG([m1,m2]/m3)

METRICS()*100

単項減算 -

S

TS

TS[]

-5*m1

-m1

SUM(-[m1, m2])

Metric Math のサポートされている関数

次の表は、数式で使用できる関数を表しています。すべての関数を大文字で入力します。

数式の最終結果は単一の時系列または時系列の配列である必要があります。以下のセクションの表の一部の関数では、スカラー数が生成されます。より大規模な関数の中でこれらの関数を使用することができ、最終的には時系列が生成されます。たとえば、単一の時系列の [AVG] はスカラー数を生成するため、最終的な式の結果にはなりません。しかし、それを関数 [m1-AVG(m1)] で使用して、個々のデータポイントとそのデータポイントの平均値の間の相違の時系列を表示できます。

次の表では、の列の例は、単一の時系列または時系列の配列を生成する式です。これは、スカラー値を返す関数を、単一の時系列を生成する有効な式の一部として使用する方法を示しています。

関数 引数 戻り型* 説明

ABS

TS

TS[]

TS

TS[]

各データポイントの絶対値を返します。

ABS(m1-m2)

MIN(ABS([m1, m2]))

ABS(METRICS())

ANOMALY_DETECTION_BAND

TS

TS、S

TS[]

指定されたメトリクスの異常検出帯を返します。帯は 2 つの時系列で構成されます。1 つはメトリクスの「通常」の想定値の上限を表し、もう 1 つは下限を表します。この関数は 2 つの引数を受け取ることができます。1 つ目は、バンドを作成するメトリクスの ID です。2 つ目の引数は、帯に使用する標準偏差の数です。この引数を指定しない場合、デフォルト値の 2 が使用されます。詳細については、「CloudWatch 異常検出」を参照してください。

ANOMALY_DETECTION_BAND(m1)

ANOMALY_DETECTION_BAND(m1,4)

AVG

TS

TS[]

S

TS

単一の時系列の AVG は、メトリクス内のすべてのデータポイントの平均を表すスカラーを返します。時系列の配列の AVG は単一の時系列を返します。欠落した値は 0 として処理されます。

SUM([m1,m2])/AVG(m2)

AVG(METRICS())

CEIL

TS

TS[]

TS

TS[]

各メトリクスの上限を返します (各値以上で最小の整数)。

CEIL(m1)

CEIL(METRICS())

SUM(CEIL(METRICS()))

FILL

TS, TS/S

TS[], TS/S

TS

TS[]

メトリクス値がスパースなとき、メトリクスの欠落した値を特定のフィラー値で埋めます。

FILL(m1,10)

FILL(METRICS(), 0)

FILL(m1, MIN(m1))

FLOOR

TS

TS[]

TS

TS[]

各メトリクスの下限を返します (各値以下で最大の整数)。

FLOOR(m1)

FLOOR(METRICS())

MAX

TS

TS[]

S

TS

単一の時系列の MAX は、メトリクス内のすべてのデータポイントの最大値を表すスカラーを返します。時系列の配列の MAX 値は単一の時系列を返します。

MAX(m1)/m1

MAX(METRICS())

METRIC_COUNT

TS[]

S

時系列の配列でメトリクスの数を返します。

m1/METRIC_COUNT(METRICS())

METRICS()

null

文字列

TS[]

METRICS() 関数は、リクエストのすべての CloudWatch メトリクスを返します。数式は含まれません

より大きな式の中で METRICS() を使用することができ、最終的には単一の時系列または時系列の配列が生成されます。

[METRICS()] 関数を文字列と使用して、[Id] フィールドにその文字列を含むグラフ化されたメトリクスのみを返すことができます。たとえば、SUM(METRICS("errors")) 式は、[Id] フィールドに「errors」のあるグラフ化されたすべてのメトリクスの値の合計である時系列を返します。また、[SUM([METRICS(“4xx”), METRICS(“5xx”)])] を使用して、複数の文字列を一致させることができます。

AVG(METRICS())

SUM(METRICS("errors"))

MIN

TS

TS[]

S

TS

単一の時系列の MIN は、メトリクス内のすべてのデータポイントの最小値を表すスカラーを返します。時系列の配列の MIN は単一の時系列を返します。

m1-MIN(m1)

MIN(METRICS())

PERIOD

TS

S

メトリクスの期間を秒単位で返します。有効な入力は、他の式の結果ではなくメトリクスです。

m1/PERIOD(m1)

RATE

TS

TS[]

TS

TS[]

メトリクスの変更のレートを秒単位で返します。これは、最新のデータポイントの値と、前のデータポイントの値の差を、2 つ値の間の時間 (秒単位) で除算して計算されます。

RATE(m1)

RATE(METRICS())

SEARCH

Search 式

1 つ以上の TS

指定した検索条件に一致する 1 つ以上の時系列を返します。[SEARCH] 関数を使用することで、1 つの式で複数の関連する時系列をグラフに追加できます。グラフは、後に追加され、検索基準に一致する新しいメトリクスが含まれるように、動的に更新されます。詳細については、「グラフで検索式を使用する」を参照してください。

STDDEV

TS

TS[]

S

TS

単一の時系列の STDDEV は、メトリクス内のすべてのデータポイントの標準偏差を表すスカラーを返します。時系列の配列の STDDEV は単一の時系列を返します。

m1/STDDEV(m1)

STDDEV(METRICS())

SUM

TS

TS[]

S

TS

単一の時系列の SUM は、メトリクス内のすべてのデータポイントの合計値を表すスカラーを返します。時系列の配列の SUM は単一の時系列を返します。

SUM(METRICS())/SUM(m1)

SUM([m1,m2])

SUM(METRICS("errors"))/SUM(METRICS("requests"))*100

* スカラー数を返す関数のみの使用は無効です。式の最終結果はすべて単一の時系列または時系列の配列である必要があります。代わりに、これらの関数を、時系列を返すより大きな式の一部として使用します。

Metric Math を GetMetricData API オペレーションと使用する

GetMetricData を使用して数式を使用した計算を実行でき、また、1 回の API コールでメトリクスデータの大規模バッチを取得できます。詳細については、「GetMetricData」を参照してください。