

# メトリクスの概念
<a name="cloudwatch_concepts"></a>

Amazon CloudWatch を理解し使用するために重要な用語と概念を、以下に示します。
+ [OpenTelemetry メトリクス](#OpenTelemetry_metrics)
+ [名前空間](#Namespace)
+ [メトリクス](#Metric)
+ [ディメンション](#Dimension)
+ [解像度](#Resolution_definition)
+ [統計](#Statistic)
+ [パーセンタイル](#Percentiles)
+ [アラーム](#CloudWatchAlarms)

 CloudWatch メトリクス、アラーム、API リクエスト、および E メール通知に関するサービスクォータについては、「[CloudWatch service quotas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html)」(CloudWatch サービスクォータ) を参照してください。

## OpenTelemetry メトリクス
<a name="OpenTelemetry_metrics"></a>

CloudWatch は、OpenTelemetry Protocol (OTLP) を使用して送信されるメトリクスもサポートしています。OpenTelemetry メトリクスは、従来の CloudWatch メトリクスとは異なるデータモデルを使用しています。名前空間とディメンションの代わりに、OpenTelemetry メトリクスは OpenTelemetry セマンティック規則に従うわかりやすいラベル (キーと値のペア) を持つメトリクス名を使用します。OpenTelemetry メトリクスは、メトリクスごとに最大 150 個のラベルをサポートし、ゲージ、合計、ヒストグラム、指数ヒストグラムなどのメトリクスタイプをサポートしています。

OpenTelemetry メトリクスは、CloudWatch Query Studio の Prometheus クエリ言語 (PromQL) を使用して、または Prometheus 互換クエリ API を介してクエリされます。OpenTelemetry メトリクスに PromQL ベースの CloudWatch アラームを設定できます。

次の表は、OpenTelemetry メトリクスと従来の CloudWatch メトリクスの主な違いをまとめたものです。


| 概念 | 従来の CloudWatch メトリクス | OpenTelemetry メトリクス | 
| --- | --- | --- | 
| アイデンティティ | 名前空間、メトリクス名、最大 30 個のディメンション | メトリクス名、最大 150 個のラベル | 
| メトリクスのタイプ | 単一の値、統計セット | ゲージ、合計、ヒストグラム、指数ヒストグラム | 
| 取り込み | PutMetricData API または AWS CLI | OpenTelemetry Protocol (OTLP) | 
| クエリ言語 | GetMetricStatistics、Metrics Insights | Prometheus クエリ言語 (PromQL) | 
| アラーム | 標準 CloudWatch アラーム | PromQL ベースの CloudWatch アラーム | 
| コンソールエクスペリエンス | CloudWatch メトリクスコンソール | CloudWatch Query Studio | 
| Retention | 自動ロールアップで最大 15 か月 | 30 日間 (パブリックプレビュー) | 

詳細については、「[OpenTelemetry を使用してメトリクスを送信する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OpenTelemetry-Sections.html)」を参照してください。

## 名前空間
<a name="Namespace"></a>

*名前空間*は、CloudWatch メトリクスのコンテナです。異なる名前空間のメトリクスは相互に切り離されて、異なるアプリケーションのメトリクスが誤って同じ統計に集約されないようになっています。

デフォルトの名前空間はありません。CloudWatch に発行する各データポイントには、名前空間を指定する必要があります。メトリクスの作成時に名前空間名を指定できます。これらの名前には有効な ASCII 文字を含める必要があり、長さを 255 文字以下にする必要があります。使用可能な文字は、英数字 (0-9A-Za-z)、ピリオド (.)、ハイフン (-)、アンダースコア (\$1)、スラッシュ (/)、ハッシュ (\$1)、コロン (:)、スペース文字です。名前空間には、空白以外の文字を 1 つ以上含める必要があります。

AWS 名前空間では通常、命名規則 `AWS/service` が使用されます。例えば、Amazon EC2 は `AWS/EC2` 名前空間を使用します。AWS 名前空間のリストは、[CloudWatch メトリクスを発行する AWS のサービス](aws-services-cloudwatch-metrics.md) を参照してください。

## メトリクス
<a name="Metric"></a>

*メトリクス*は CloudWatch での基本的な概念です。メトリクスは、CloudWatch に発行された時系列のデータポイントのセットを表します。メトリクスはモニターリング対象の変数と考え、データポイントは時間の経過と共に変数の値を表します。例えば、特定の EC2 インスタンスの CPU 使用率は、Amazon EC2 により提供される 1 つのメトリクスです。データポイント自体は、データの収集元のアプリケーションまたはビジネスアクティビティから生成されます。

デフォルトでは、多くの AWS のサービスはリソース (Amazon EC2 インスタンス、Amazon EBS ボリューム、Amazon RDS DB インスタンスなど) に対してメトリクスを無料で提供しています。料金については、Amazon EC2 インスタンスなど一部のリソースの詳細モニターリングを有効にしたり、独自のアプリケーションメトリクスを発行したりもできます。カスタムメトリクスには、データポイントを任意の順序や比率で追加できます。それらのデータポイントについての統計を、順序付けられた時系列データのセットとして取得できます。

メトリクスは作成されたリージョンにのみ存在します。メトリクスは削除できませんが、それらに対して新しいデータが発行されない場合、15 か月後に自動的に有効期限切れになります。15 か月以上経過したデータポイントは、ローリング方式で期限切れになります。つまり、新しいデータポイントが入ってくるたびに、古い 15 か月以上経過したものが削除されます。

メトリクスは名前、名前空間、0 以上のディメンションで一意に定義されます。メトリクスの各データポイントには、タイムスタンプと、(オプションで) 測定単位があります。CloudWatch から任意のメトリクスの統計情報を取得できます。

詳細については、「[利用可能なメトリクスを表示する](viewing_metrics_with_cloudwatch.md)」および「[カスタムメトリクスをパブリッシュする](publishingMetrics.md)」を参照してください。

### タイムスタンプ
<a name="about_timestamp"></a>

各メトリクスデータポイントに、タイムスタンプが関連付けられている必要があります。タイムスタンプは、最大 2 週間前から最大 2 時間後になります。ユーザーがタイムスタンプを指定しない場合は、データポイントを受信した時間を基に、CloudWatch がタイムスタンプを作成します。

タイムスタンプは、完全な日付、時間、分、秒を含む `dateTime` オブジェクトです (たとえば、2016-10-31T23:59:59Z)。詳細については、「[dateTime](http://www.w3.org/TR/xmlschema-2/#dateTime)」を参照してください。必須ではありませんが、協定世界時 (UTC) を使用することをお勧めします。CloudWatch から統計を取得すると、すべての時刻は UTC になります。

CloudWatch アラームは、現在の UTC 時刻に基づいてメトリクスをチェックします。現在の UTC 時刻以外のタイムスタンプで CloudWatch にカスタムメトリクスが送信されると、アラームが **Insufficient Data** 状態を表示するか、アラームに遅延が生じる可能性があります。

### メトリクスの保持
<a name="metrics-retention"></a>

CloudWatch では、次のようにメトリクスデータを保持します。
+ 期間が 60 秒未満のデータポイントは、3 時間使用できます。これらのデータポイントは高解像度カスタムメトリクスです。
+ 期間が 60 秒 (1 分) のデータポイントは、15 日間使用できます。
+ 期間が 300 秒 (5 分) のデータポイントは、63 日間使用できます。
+ 期間が 3600 秒 (1 時間) のデータポイントは、455 日 (15 か月) 間使用できます。

最初は短い期間で発行されるデータポイントは、長期的なストレージのため一緒に集計されます。たとえば、1 分の期間でデータを収集する場合、データは 1 分の解像度で 15 日にわたり利用可能になります。15 日を過ぎてもこのデータはまだ利用できますが、集計され、5 分の解像度のみで取得可能になります。63 日を過ぎるとこのデータはさらに集計され、1 時間の解像度のみで利用できます。

**注記**  
過去 2 週間に新しいデータポイントがないメトリクスは、コンソールに表示されません。また、これらはコンソールの [**すべてのメトリクス**] タブの検索ボックスにメトリクス名やディメンション名を入力しても表示されず、[list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) コマンドの結果でも返されません。これらのメトリクスを取得する最善の方法は、AWS CLI の [get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-data.html) コマンドまたは [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) コマンドを使用することです。

## ディメンション
<a name="Dimension"></a>

*ディメンション*は、メトリクスのアイデンティティの一部である名前と値のペアです。1 メトリクスあたり最大 30 ディメンションを割り当てることができます。

各メトリクスには、それを表す固有の特徴があります。ディメンションはその特徴のカテゴリーと考えることができます。ディメンションは、統計プランの構造を設計するのに役立ちます。ディメンションは、メトリクスの一意の識別子の一部であるため、メトリクスに一意の名前と値のペアを追加するときは常に、そのメトリクスの新しいバリエーションを作成していることになります。

CloudWatch にデータを送信する AWS のサービスは、各メトリクスにディメンションを指定します。CloudWatch が返す結果にフィルタを掛ける際にディメンションを使用できます。たとえば、メトリクスを検索する際に `InstanceId` ディメンションを指定することにより、特定の EC2 インスタンスの統計を取得できます。

Amazon EC2 など特定の AWS のサービスが生成するメトリクスでは、CloudWatch は複数のディメンションにまたがるデータを集約する場合があります。例えば、ディメンションを指定せずに `AWS/EC2` 名前空間にあるメトリクスを検索すると、CloudWatch は、指定されたメトリクスの全データを集約して、リクエストされた統計を作成します。CloudWatch はディメンション間ではカスタムメトリクスを集約しません。

### ディメンションの組み合わせ
<a name="dimension-combinations"></a>

CloudWatch は、メトリクスのメトリクス名が同じ場合でも、ディメンションの一意の各組み合わせを別個のメトリクスとして扱います。明示的に発行したディメンションの組み合わせを用いてのみ、統計を取得できます。統計を取得するとき、名前空間、メトリクス名、ディメンションパラメータに、メトリクス作成時に使用されたのと同じ値を指定します。CloudWatch が集約に使用する開始時間と終了時間も指定できます。

たとえば、次のプロパティを使用して、DataCenterMetric 名前空間内で ServerStats という名前の 4 つの異なるメトリクスを発行するとします。

```
Dimensions: Server=Prod, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:30:00Z, Value: 105
Dimensions: Server=Beta, Domain=Frankfurt, Unit: Count, Timestamp: 2016-10-31T12:31:00Z, Value: 115
Dimensions: Server=Prod, Domain=Rio,       Unit: Count, Timestamp: 2016-10-31T12:32:00Z, Value: 95
Dimensions: Server=Beta, Domain=Rio,       Unit: Count, Timestamp: 2016-10-31T12:33:00Z, Value: 97
```

これらの 4 つのメトリクスのみを発行した場合、次のディメンションの組み合わせで統計を取得できます。
+ `Server=Prod,Domain=Frankfurt`
+ `Server=Prod,Domain=Rio`
+ `Server=Beta,Domain=Frankfurt`
+ `Server=Beta,Domain=Rio`

次のディメンションの統計を取得したり、ディメンションを指定しない場合に統計を取得したりすることはできません。(例外は、複数のメトリクスの統計を取得できる Metric Math の **SEARCH** 関数を使用することです。詳細については、「[グラフで検索式を使用する](using-search-expressions.md)」を参照してください。)
+ `Server=Prod`
+ `Server=Beta`
+ `Domain=Frankfurt`
+ `Domain=Rio`

**注記**  
OpenTelemetry メトリクスは、ディメンションの代わりにラベルを使用します。ラベルは同様の目的を果たしますが、OpenTelemetry セマンティック規則に従い、メトリクスごとに最大 150 個のラベルをサポートします。詳細については、「[OpenTelemetry メトリクス](#OpenTelemetry_metrics)」を参照してください。

## 解像度
<a name="Resolution_definition"></a>

各メトリクスは次のいずれかです。
+ 詳細度が 1 分のデータを含む、標準の解像度
+ 詳細度が 1 秒のデータを含む高解像度

AWS のサービスによって生成されたメトリクスは、デフォルトで標準解像度になります。カスタムメトリクスを発行するときは、標準解像度または高解像度のいずれかとして定義できます。高分解能のメトリクスをパブリッシュすると、CloudWatch はそれを 1 秒の分解能で保存します。ユーザーは、1 秒、5 秒、10 秒、30 秒、または 60 秒の倍数の期間でメトリクスを読み取り、取得できます。

高解像度メトリクスを使用すれば、アプリケーションの 1 分未満のアクティビティをより迅速に把握できます。`PutMetricData` がカスタムメトリクスを呼び出す場合、課金されることに注意してください。そのため、高解像度で `PutMetricData` を頻繁に呼び出すと、高額な料金が発生する可能性があります。CloudWatch の料金の詳細については、[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)をご覧ください。

高解像度メトリクスでアラームを設定する場合、10 秒または 30 秒の期間で高解像度アラームを指定するか、60 秒の倍数の期間で通常のアラームを設定できます。10 秒または 30 秒の期間の高解像度アラームでは、料金が高くなります。

**注記**  
OpenTelemetry メトリクスは、最小粒度制限なしで、送信される解像度で取り込まれます。OpenTelemetry メトリクスの解決とロールアップの動作は、従来の CloudWatch メトリクスとは異なります。

## 統計
<a name="Statistic"></a>

*統計*とはメトリクスデータを指定した期間で集計したものです。CloudWatch は、カスタムデータまたは他の AWS のサービスから CloudWatch に与えられたメトリクスのデータポイントを基に、統計を提供します。集約は、指定した期間内に、名前空間、メトリクス名、ディメンション、データポイントの測定単位を用いて行われます。

CloudWatch でサポートされている統計の詳細定義については、[CloudWatch 統計定義](Statistics-definitions.md) を参照してください。

## 単位
<a name="Unit"></a>

各統計には、測定単位があります。単位の例は、`Bytes`、`Seconds`、`Count`、`Percent` などです。CloudWatch がサポートするユニットの詳細なリストについては、「Amazon CloudWatch API リファレンス」の「[MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)」データ型を参照してください。

カスタムメトリクスを作成するときに単位を指定できます。単位を指定しない場合、CloudWatch は単位として `None` を使用します。単位は、データの概念的意味を与えるのに役立ちます。CloudWatch は内部的に単位に意味を持たせていませんが、他のアプリケーションでは、単位を基に意味のある情報を引き出すことができます。

測定単位を指定するメトリクスデータポイントは個別に集約されます。単位を指定せずに統計を取得する場合、CloudWatch が同じ単位のデータポイントをすべて 1 つに集約します。単位だけが異なっている 2 つのメトリクスがある場合、単位ごとに別々の 2 つのデータストリームが返されます。

## 期間
<a name="CloudWatchPeriods"></a>

*期間*とは、特定の Amazon CloudWatch 統計に関連付けられた時間長です。各統計は、指定された期間に収集されたメトリクスデータの集約を表しています。期間は秒数で定義され、期間の有効な値は、1、5、10、30、または 60 の倍数になります。たとえば、6 分の期間を指定するには、期間の値として 360 を使用します。期間の長さを変えることで、データの集約方法を調整できます。デフォルト値は 60 秒間です。長さは最短で 1 秒にすることができ、デフォルト値の 60 秒を超える場合は、60 の倍数にする必要があります。

1 秒のストレージ解像度で定義したカスタムメトリクスのみが、1 分未満の解像度をサポートします。60 秒未満の期間を設定するオプションは常にコンソールで利用できますが、メトリクスの保存方法に合った期間を選択する必要があります。1 分未満の期間をサポートするメトリクスの詳細については、「[高解像度のメトリクス](publishingMetrics.md#high-resolution-metrics)」を参照してください。

統計を取得するとき、期間、開始時刻、終了時刻を指定できます。これらのパラメータでは、統計に関連する全体の時間長を決定します。開始時刻と終了時刻のデフォルト値では、過去 1 時間分の統計が得られます。開始時刻と終了時刻に指定した値により、CloudWatch により返される期間が決まります。たとえば、期間、開始時刻、終了時刻のデフォルト値を使用して統計を取得すると、過去 1 時間で毎分の集約された統計一式が返されます。10 分区切りで集約された統計を取得する場合は、期間を 600 に指定します。1 時間分の集約された統計の場合は、期間を 3600 に設定します。

一定期間にわたって統計が集計されると、その期間の開始時点に対応する時刻のタイムスタンプが付きます。たとえば、午後 7:00～午後 8:00 に集計されたデータには、午後 7:00 のタイムスタンプが付きます。さらに、午後 7:00～午後 8:00 に集計されたデータは午後 7:00 から表示され、この期間中に CloudWatch がさらに多くのサンプルを集計するにつれて、集計データの値が変わる場合があります。

CloudWatch アラームでは、期間も重要です。特定のメトリクスをモニターリングするアラームを作成したなら、そのメトリクスと指定したしきい値を比較するよう CloudWatch に依頼していることになります。ユーザーは、CloudWatch がその比較を行う方法を広範囲に制御できます。どれくらいの期間で比較するかだけでなく、結論までに使用する評価期間数も設定できます。例えば、3 つの評価期間を設定すると、CloudWatch は 3 つのデータポイントのウィンドウを比較します。最も古い期間が超過し、その他の期間が超過または不足している場合にのみ、CloudWatch は通知を送ります。

## 集計
<a name="CloudWatchAggregation"></a>

統計の取得時に指定した期間の長さに従って、Amazon CloudWatch は統計を集約します。同一または類似したタイムスタンプを使って、望む数のデータポイントをパブリッシュできます。CloudWatch は、指定された期間の長さに従って集約します。CloudWatch はリージョン間でデータを自動的に集約しませんが、メトリクスの計算を使用して、異なるリージョンのメトリクスを集約できます。

同じタイムスタンプだけでなく、同じ名前空間とディメンションを共有するメトリクスのデータポイントをパブリッシュできます。CloudWatch は、それらのデータポイントの集約された統計を返します。また、どのタイムスタンプでも、同じメトリクスまたは異なるメトリクスの複数のデータポイントをパブリッシュすることもできます。

大きいデータセットの場合、*統計セット*という事前集約されたデータセットを挿入できます。統計セットにより、CloudWatch に多数のデータポイントの Min (最小値)、Max (最大値)、Sum (合計)、SampleCount (サンプルカウント) を与えます。これは、1 分間に何回もデータを収集する必要がある場合によく使用されます。例えば、ウェブページのリクエストレイテンシーに関するメトリクスがあるとします。ウェブページがヒットされるたびにデータを発行しても意味がありません。そこで、そのウェブページの全ヒットのレイテンシーを収集してそのデータを毎分集約し、その統計セットを CloudWatch に送信することをお勧めします。

Amazon CloudWatch は、メトリクスのソースを区別しません。ソースが異なっていても、名前空間とディメンションが同じメトリクスがパブリッシュされれば、CloudWatch はこれを 1 つのメトリクスとして扱います。これは、分散型の、拡大縮小されたシステムのサービスメトリクスで有用です。たとえば、ウェブサーバーのアプリケーションのすべてのホストが処理するリクエストのレイテンシーを表すメトリクスを 1 つにまとめてパブリッシュできます。CloudWatch はこれらを 1 つのメトリクスとして扱い、アプリケーション全体ですべてのリクエストの最小値、最大値、平均、合計の統計を取得できるようにします。

## パーセンタイル
<a name="Percentiles"></a>

*パーセンタイル*は、データセットにおける値の相対的な位置を示します。たとえば、95 パーセンタイルは、95 パーセントのデータがこの値を下回っており、5 パーセントのデータがこの値を上回っていることを意味します。パーセンタイルにより、メトリクスデータの分布をよく理解することができます。

パーセンタイルは、異常を分離するためによく使用されます。正規分布では、95 パーセントのデータが平均から 2 標準偏差以内に収まっており、99.7 パーセントのデータが平均から 3 標準偏差以内に収まっています。3 標準偏差に収まらないデータは、平均値とかけ離れているため、多くの場合異常と見なされます。たとえば、お客様の満足度を高めるため、EC2 インスタンスの CPU 使用率をモニターリングしているとします。平均をモニターリングした場合、異常が見えなくなる可能性があります。最大をモニターリングした場合、1 つの異常のために正しい結果が見えなくなる可能性があります。パーセンタイルを使用すると、CPU 使用率の 95 パーセンタイルをモニターリングし、負荷が異常に高いインスタンスをチェックできます。

CloudWatch メトリクスの中には、統計としてパーセンタイルがサポートされています。これらのメトリクスの場合、他の CloudWatch 統計 (平均、最小、最大、合計) を使用するのと同じように、パーセンタイルを使用してシステムとアプリケーションをモニターリングできます。たとえば、アラームを作成するとき、パーセンタイルを統計関数として使用できます。小数点以下最大 10 桁のパーセンタイルを指定できます (p95.0123456789 など)。

カスタムメトリクスの要約されていない raw データポイントを発行するかぎり、カスタムメトリクスでパーセンタイル統計を利用できます。パーセンタイル統計は、メトリクス値が負の数値のメトリクスに対して使用することはできません。

CloudWatch は、raw データポイントを使用してパーセンタイルを計算します。代わりに統計セットを使用してデータを発行する場合は、以下の条件のいずれか真である場合のみ、このデータのパーセンタイル統計を取得できます。
+ 統計セットの SampleCount 値は 1 で、Min、Max、Sum はすべて等しくなります。
+ Min と Max は等しく、Sum は Min に SampleCount を乗算した値に等しくなります。

次の AWS サービスには、パーセンタイル統計をサポートするメトリクスが含まれています。
+ API Gateway
+ Application Load Balancer
+ Amazon EC2
+ Elastic Load Balancing
+ Kinesis
+ Lambda
+ Amazon RDS

CloudWatch では、トリミングされた平均値やその他のパフォーマンス統計もサポートしており、パーセンタイルと同様の使用が可能です。詳細については、「[CloudWatch 統計定義](Statistics-definitions.md)」を参照してください。

## アラーム
<a name="CloudWatchAlarms"></a>

*アラーム*を使用すると、アクションを自動的に開始することができます。アラームは、指定した期間の単一のメトリクスを監視し、一定期間におけるしきい値とメトリクスの値の関係性に基づいて、1 つ以上の指定されたアクションを実行します。アクションは、Amazon SNS のトピックまたは Auto Scaling のポリシーに送信される通知です。アラームはダッシュボードに追加することもできます。

アラームは、持続している状態変化に対してのみアクションを呼び出します。CloudWatch アラームは、特定の状態にあるという理由だけではアクションを呼び出しません。状態が変わって、変わった状態が指定期間にわたって維持される必要があります。

アラームを作成するときは、メトリクス解像度以上のアラームのモニタリング期間を選択します。例えば、Amazon EC2 の基本モニターリングでは、5 分ごとにインスタンスのメトリクスが提供されます。基本モニターリングのメトリクスにアラームを設定する場合、少なくとも 300 秒 (5 分) の期間を選択します。Amazon EC2 の詳細モニターリングでは、1 分の解像度でインスタンスのメトリクスが提供されます。詳細モニターリングのメトリクスにアラームを設定する場合、少なくとも 60 秒 (1 分) の期間を選択します。

 高解像度メトリクスでアラームを設定する場合、10 秒または 30 秒の期間で高解像度アラームを指定するか、60 秒の倍数の期間で通常のアラームを設定できます。高解像度のアラームには高い料金が発生します。高解像度メトリクスの詳細については、「[カスタムメトリクスをパブリッシュする](publishingMetrics.md)」を参照してください。

詳細については、「[Amazon CloudWatch でのアラームの使用](CloudWatch_Alarms.md)」および「[グラフのメトリクスからアラームを作成する](create_alarm_metric_graph.md)」を参照してください。

OpenTelemetry メトリクスでは、PromQL ベースの CloudWatch アラームを作成できます。これらのアラームは PromQL クエリを使用してアラーム条件を定義し、CloudWatch Query Studio で使用できるのと同じクエリ言語を使用します。