

# CloudWatch Metrics Insights を使用して CloudWatch メトリクスをクエリする
<a name="query_with_cloudwatch-metrics-insights"></a>

CloudWatch Metrics Insights は、高性能な SQL クエリエンジンであり、これにより、メトリクスに対し大量のクエリを実行できます。すべての CloudWatch メトリクス内の傾向とパターンをリアルタイムで特定でき、最大 2 週間の履歴データにアクセスして包括的な傾向分析を行うことができます。

また、単一の時系列を返すどの Metrics Insights クエリにでも、アラームを設定できます。これは、インフラストラクチャやアプリケーションのフリートで集約されたメトリクスを監視するアラームを作成する場合に特に役立ちます。アラームを一度作成すると、リソースがフリートに追加されたり、フリートから削除されたりするたびに動的に調整されます。

 CloudWatch Metrics Insights クエリエディタを使用すると、コンソールで CloudWatch Metrics Insights クエリを実行できます。また、`GetMetricData` や `PutDashboard` を実行して、AWS CLI や AWS SDK で CloudWatch Metrics Insights クエリを実行することもできます。CloudWatch Metrics Insights クエリエディタでクエリを実行した場合には、料金がかかりません。CloudWatch の料金の詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」をご覧ください。

 CloudWatch Metrics Insights クエリエディタでは、事前構築済みのさまざまなサンプルクエリを選択できるほか、独自のクエリを作成することもできます。クエリを作成すると、ビルダービューを使用して既存のメトリクスとディメンションを参照できます。あるいは、エディタビューを使用して、手動でクエリを記述できます。

Metrics Insights では、大量のクエリを実行できます。**GROUP BY** 句を使用すると、メトリクスを特定のディメンション値ごとに個別の時系列にリアルタイムでグループ化できます。Metrics Insights クエリには **ORDER BY** 機能があるため、Metrics Insights を使用して「上位 N」といったタイプのクエリを作成できます。例えば、「上位 N」タイプのクエリでは、アカウント内の何百万ものメトリクスをスキャンして、CPU の消費率が高い上位 10 個のインスタンスを返すことができます。アプリケーションのレイテンシーの問題を特定して修正する場合に効果的です。アラームでタグを使用するには、CloudWatch 設定でオプトインします。タグを有効にすると、AWS リソースタグを使用してメトリクスをフィルタリングおよびグループ化することもできます。これにより、アプリケーションごと、環境ごと、チームごとなど、組織構造に沿ってメトリクスをクエリできます。

**Topics**
+ [

# CloudWatch Metrics Insights でのクエリの作成
](cloudwatch-metrics-insights-buildquery.md)
+ [

# CloudWatch Metrics Insights のクエリコンポーネントと構文
](cloudwatch-metrics-insights-querylanguage.md)
+ [

# CloudWatch での CloudWatch Metrics Insights クエリのアラーム
](cloudwatch-metrics-insights-alarms.md)
+ [

# メトリクス数式のクエリで Metrics Insights を使用する
](cloudwatch-metrics-insights-math.md)
+ [

# 自然言語を使用した CloudWatch Metrics Insights クエリの生成と更新
](cloudwatch-metrics-insights-query-assist.md)
+ [

# SQL 推論
](cloudwatch-metrics-insights-inference.md)
+ [

# Metrics Insights のクォータ
](cloudwatch-metrics-insights-limits.md)
+ [

# Metrics Insights のサンプルクエリ
](cloudwatch-metrics-insights-queryexamples.md)
+ [

# Metrics Insights 用語集
](cloudwatch-metrics-insights-glossary.md)
+ [

# Metrics Insights のトラブルシューティング
](cloudwatch-metrics-insights-troubleshooting.md)

# CloudWatch Metrics Insights でのクエリの作成
<a name="cloudwatch-metrics-insights-buildquery"></a>

CloudWatch Metrics Insights のクエリは、CloudWatch コンソール、AWS CLI、または AWS SDK から実行します。コンソールで実行されるクエリは無料です。CloudWatch の料金の詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」をご覧ください。

CloudWatch Metrics Insights を使用すると、最大 2 週間の長期間にわたってメトリクスデータを分析できるため、より短い保持期間の場合と比較して、より包括的な履歴分析と傾向の特定が可能になります。より長い時間範囲をクエリするときに最適なパフォーマンスを得るには、より長い期間 (5 分や 1 時間など) を使用して、返されるデータポイントの数を減らすことを検討してください。2 週間全体の傾向を分析するときは、ORDER BY 句で AVG() や MAX() などの集計関数を使用してパターンを効率的に識別します。

AWS SDK による Metrics Insights クエリの実行に関する詳細は、「[GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)」でご確認ください。

CloudWatch コンソールを使用してクエリを実行するには、以下の手順に従います。

**Metrics Insights を使用してメトリクスをクエリするには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、[**Metrics**]、[**All metrics**] を選択します。

1. (オプション) 事前構築のサンプルクエリを実行するには、**[Add query]** (クエリを追加) をクリックした上で、実行するクエリを選択します。選択したクエリの機能に不足がない場合は、この手順の残りをスキップできます。または、**[Editor]** (エディタ) をクリックし、サンプルクエリの編集を行った上で、**[Run]** (実行) をクリックしてそのクエリを実行できます。

1. 独自のクエリを作成するには、**[マルチソースクエリ]** を選択します。その後、**[ビルダー]** ビュー (デフォルト) を使用してガイド付きエクスペリエンスを得ることも、**[エディタ]** ビューを使用してクエリ構文を表示することもできます。この 2 つのビューはいつでも切り替えが可能で、どちらからも進行中の作業を確認できます。

   **[ビルダー]** ビューで、名前空間、メトリクス名、フィルター、グループ、順序、制限の各フィールドをクリックして、可能な値を参照して選択します。ビルダーによって表示されるリストをフィルタリングするために、探している値の任意の部分の入力を開始できます。フィルターおよびグループ入力でリソースタグを参照できます。

   **[エディタ]** ビューでは、Metrics Insights でサポートされている SQL のサブセットを使用してクエリを記述できます。エディタには、メトリクスがサポートするリソースタグの名前など、これまでに入力した文字に基づく自動補完オプションが用意されています。

   CloudWatch Metrics Insights は、AWS リソースタグによるメトリクスのクエリをサポートしています。タグを使用してメトリクスデータをフィルタリングおよびグループ化し、より的を絞ったモニタリングと分析を行うことができます。

   以下の例は、タグ付きのクエリを使用する方法を示しています。

   本番環境内の Amazon EC2 インスタンスの CPU 使用率を確認するには:

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") WHERE tag.env='prod'
   ```

   GROUP BY 句を使用して環境ごとにメトリクスをグループ化するには:

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") GROUP BY tag.env
   ```

   タグ名を指定して GROUP BY 句を使用するには:

   ```
   SELECT AVG(CPUUtilization) FROM "AWS/EC2" GROUP BY tag."aws:cloudformation:stack-name"
   ```

   タグクエリを既存のメトリクスディメンションと組み合わせるには:

   ```
   SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2") WHERE tag.env='prod' AND InstanceId='i-1234567890abcdef0'
   ```

1. クエリの内容に問題がなければ、**[Run]** (実行) をクリックします。

1. (オプション) グラフ表示したクエリを編集するには、**[Graphed metrics]** (グラフ化したメトリクス) タブを開き、**[Details]** (詳細) 列でクエリ式の横にある編集アイコンクリックするという方法もあります。

1. (オプション) グラフからクエリを削除する場合は、**[Graphed metrics]** (グラフ化したメトリクス) をクリックし、クエリが表示されている行の右側にある **[X]** アイコンをクリックします。

# CloudWatch Metrics Insights のクエリコンポーネントと構文
<a name="cloudwatch-metrics-insights-querylanguage"></a>

CloudWatch Metrics Insights の構文は以下のとおりです。

```
SELECT FUNCTION(metricName)
FROM namespace | SCHEMA(...)
[ WHERE labelKey OPERATOR labelValue [AND ... ] ]
[ GROUP BY labelKey [ , ... ] ]
[ ORDER BY FUNCTION() [ DESC | ASC ] ]
[ LIMIT number ]
```

Metrics Insights のクエリで使用可能な句は以下のとおりです。キーワードでは大文字と小文字は区別されませんが、メトリクスの名前、名前空間、ディメンションなど、メトリクスの識別子については大文字と小文字が区別されます。

**SELECT**  
必須。各タイムバケットの (指定された期間によって決定される) 観測値を集計するための関数を指定します。同時に、クエリするメトリクスの名前も指定します。  
**FUNCTION** での有効な値は、`AVG`、`COUNT`、`MAX`、`MIN`、および `SUM` です。  
+ `AVG` では、クエリで一致があった観測値の平均を計算します。
+ `COUNT` では、クエリで一致した観測値のカウントを返します。
+ `MAX` では、クエリで一致があった観測値の最大値を返します。
+ `MIN` では、クエリで一致があった観測値の最小値を返します。
+ `SUM` では、クエリで一致があった観測値を合計し、その値を返します。

**FROM**  
必須。メトリクスのソースを指定します。クエリされるメトリクスを含むメトリクス名前空間、あるいは、**SCHEMA** テーブル関数のどちらかを指定します。メトリクス名前空間の例としては、`"AWS/EC2"`、`"AWS/Lambda"` などを初めとして、カスタムメトリクス用にユーザーが作成したメトリクス名前空間なども含まれます。  
**/** を含む (または、文字、数字、アンダースコア以外の文字を含む) メトリクス名前空間は、二重引用符で囲む必要があります。詳細については、「[引用符やエスケープ文字を使用すべき場合を教えてください。](#cloudwatch-metrics-insights-syntaxdetails)」を参照してください。  
**SCHEMA**  
**FROM** 句内で使用できるオプションのテーブル関数。**SCHEMA** は、クエリ結果をリストされたディメンションと完全に一致したメトリクスからのもの、あるいは、ディメンションを持たないメトリクスからのものに絞り込みます。  
**SCHEMA** 句を使用する際は、クエリ対象のメトリクス名前空間を指定するために、(最初の引数として) 少なくとも 1 つを渡す必要があります。**SCHEMA** において、この名前空間引数のみを指定した場合は、クエリ結果の範囲がディメンションを持たないメトリクスのみに絞られます。  
**SCHEMA** で、名前空間引数の後に他の引数を指定する場合、それらの追加の引数は*ラベル*キーにする必要があります。ラベルキーでは、ディメンション名を指定します。このラベルキーを 1 つ以上指定することで、ディメンションセットが正確に一致するメトリクスのみに、クエリ結果の範囲が絞り込まれます。これらのラベルキーの順序は任意です。  
例:   
+ **SELECT AVG(CPUUtilization) FROM "AWS/EC2"** は、`AWS/EC2` 名前空間内にあるすべての `CPUUtilization` メトリクスと一致し、ディメンションは関係ありません。結果には、単一の集計時系列が返されます。
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")** では、`AWS/EC2` 名前空間内でディメンションが定義されていない `CPUUtilization` メトリクスのみが一致します。
+ **SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)** では、厳密に 1 つのディメンション (`InstanceId`) で CloudWatch に報告された `CPUUtilization` メトリクスのみと一致します。
+ **SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)** では、厳密に 2 つのディメンション (`LoadBalancer` と `AvailabilityZone`) で `AWS/ApplicationELB` から CloudWatch に報告された `RequestCount` メトリクスのみと一致します。

**WHERE**  
オプション。1 つ以上のラベルキーで特定のラベル値を使用しながら指定した式と一致するメトリクスのみに、結果をフィルタリングします。例えば、**WHERE InstanceType = 'c3.4xlarge'** は、結果を `c3.4xlarge` インスタンスタイプのみにフィルタリングします。また、**WHERE InstanceType \$1= 'c3.4xlarge'**では、`c3.4xlarge` を除くすべてのインスタンスタイプに結果をフィルタリングします。  
モニタリングアカウントでクエリを実行する場合、`WHERE AWS.AccountId` を使用して、指定したアカウントのみに結果を制限できます。例えば、`WHERE AWS.AccountId=444455556666` は `444455556666` アカウントのみのメトリクスをクエリします。クエリをモニタリングアカウント自体のメトリクスにのみ制限するには、`WHERE AWS.AccountId=CURRENT_ACCOUNT_ID()` を使用します。  
ラベル値は、常に一重引用符で囲む必要があります。  
**WHERE 句でのタグの使用**  
構文 `tag.keyName` を使用して、AWS リソースタグで結果をフィルタリングできます。タグフィルターは、ディメンションフィルターと同じ演算子ルールに従います。例えば、次のようになります。  
+ WHERE `tag.env = 'prod'` と記述すると、*env=prod* でタグ付けされたリソースからメトリクスをフィルタリングします。
+ WHERE `tag.department != 'test'` と記述すると、*department=test* でタグ付けされたリソースからメトリクスを除外します。
タグフィルターはディメンションフィルターと組み合わせることができます。  
`WHERE tag.env = 'prod' AND InstanceType = 'm5.large'`  
**サポートされている演算子**  
**WHERE** 句では以下の演算子がサポートされます。  
+ **=** ラベル値は指定された文字列と一致することを表します。
+ **\$1=**ラベル値は、指定した文字列と一致しないことを表します。
+ **AND** は、指定された 2 つの条件がともに true である場合に一致することを表します。**AND** キーワードは、2 つ以上の条件を指定するために使用することもできます。

**グループ化の条件**  
オプション。クエリ結果を複数の時系列にグループ化します。各時系列は、指定したラベルキーもしくは他のキーでの、さまざまな値に対応します。例えば `GROUP BY InstanceId` を使用すると、`InstanceId` の各値に応じて異なる時系列が返されます。`GROUP BY ServiceName, Operation` を使用すると、`ServiceName` と `Operation` の値による可能な組み合わせごとに、それぞれ時系列が作成されます。  
**GROUP BY** 句では、デフォルトで、結果がアルファベットの昇順に並べられます。その際は、この **GROUP BY** 句で指定されたラベルシーケンスが使用されます。この結果の順序を変更するには、クエリに **ORDER BY** 句を追加します。  
モニタリングアカウントでクエリを実行する場合、`GROUP BY AWS.AccountId` を使用して、各結果をその生成元のアカウントに基づいてグループ化できます。  
**GROUP BY 句でのタグの使用**  
構文 `tag.keyName` を使用して、AWS リソースタグ値で結果をグループ化できます。例えば、次のようになります。  
+ *GROUP BY tag.environment* と記述すると、環境タグ値ごとに個別の時系列を作成します。
+ *GROUP BY tag.team, InstanceType* と記述すると、タグ値とディメンション値の両方でグループ化します。
+ *GROUP BY tag.team, AWS.AccountId* と記述すると、タグとリンクされたソース AccountID の両方でグループ化します。
一致するメトリクスの一部に、**GROUP BY** 句で指定された特定のラベルキーを含まないものがある場合、`Other` という名前の NULL グループが返されます。例えば、`GROUP BY ServiceName, Operation` を指定している場合で、返されたメトリクスの一部にディメンションとして `ServiceName` を含まないものがあると、これらのメトリクスは、`Other` という値の `ServiceName` を持つものとして表示されます。

**ORDER BY**  
オプション。クエリが複数の時系列を返す場合に、それら返される時系列で使用する順序を指定します。この順序は、**[ORDER BY]** 句で指定した **[FUNCTION]** が検出した値に基づいて決定されます。**FUNCTION** は、返されたそれぞれの時系列から単一のスカラー値を算出し、この値が、順序を決定するために使用されます。  
また順序には、**ASC** (昇順) か **DESC** (降順) のどちらを使用するかも指定します。この指定を省略した場合は、デフォルトで昇順の **ASC** が使用されます。  
例えば `ORDER BY MAX() DESC` 句では、対象の時間範囲内での観測結果を、最大データポイントにより降順で順序付けします。つまり、最大データポイントが最も多い時系列が、最初の結果として返されます。  
**ORDER BY** 句内で使用可能な関数は、`AVG()`、`COUNT()`、`MAX()`、`MIN()`、および `SUM()` です。  
**ORDER BY** 句を **LIMIT** 句とともに使用した場合、返される結果は「Top N」クエリになります。個別のクエリが返すことができる時系列は 500 個以下であるため、**ORDER BY** は、クエリから多数のメトリクスを返させたい場合にも役立ちます。クエリで 500 個を超える時系列 が一致した場合に **ORDER BY** 句を使用していると、時系列が並べ替えられ、その順序内で最初の 500 個までの時系列を結果として返すことができます。

**LIMIT**  
オプション。クエリによって返される時系列の数を、指定した値に制限します。指定できる最大値は 500 です。また、クエリに **LIMIT** を指定しない場合でも、返すことができる時系列は 500 個以下です。  
**LIMIT** 句を **ORDER BY** 句とともに使用すると、「Top N」のクエリが返されます。

## 引用符やエスケープ文字を使用すべき場合を教えてください。
<a name="cloudwatch-metrics-insights-syntaxdetails"></a>

クエリで指定するラベル値は、常に一重引用符で囲む必要があります。例えば、**SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'** のようにします。

文字、数字、アンダースコア (\$1) 以外の文字を含むメトリクスの名前空間、メトリクス名、ラベルキーは、二重引用符で囲む必要があります。例としては、**SELECT MAX("My.Metric")** のようになります。

これらのいずれかに二重引用符または一重引用符自体が含まれている (例: `Bytes"Input"`) 場合は、**SELECT AVG("Bytes\$1"Input\$1"")** のようにして、各引用符をバックスラッシュでエスケープする必要があります。

メトリクス名前空間、メトリクス名、またはラベルキーに、Metrics Insights での予約キーワードが含まれている場合は、これらも二重引用符で囲む必要があります。例えば、`LIMIT` という名前のメトリクスを指定するのであれば、`SELECT AVG("LIMIT")` のようになります。また、予約キーワードを含まない場合に、名前空間、メトリクス名、またはラベルを二重引用符で囲んだとしても、エラーとはなりません。

全予約キーワードの一覧については、「[予約済みキーワード](cloudwatch-metrics-insights-reserved-keywords.md)」を参照してください。

## リッチクエリの作成手順
<a name="cloudwatch-metrics-insights-syntaxexample"></a>

このセクションでは、利用可能なすべての句を使用してクエリを作成する際の完全な例を、ステップバイステップで解説します。

まず次のクエリから始めます。このクエリは、`LoadBalancer` と `AvailabilityZone` の両方のディメンションで収集された、Application Load Balancer のすべての `RequestCount` メトリクスを集計します。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
```

特定のロードバランサーからのメトリクスのみを表示するには、**WHERE** 句を追加します。これにより、返されるメトリクスを `LoadBalancer` ディメンションの値が `app/load-balancer-1` であるもののみに制限できます。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
```

前述のクエリでは、このロードバランサーに関するすべてのアベイラビリティーゾーンからの `RequestCount` メトリクスが、1 つの時系列内に集計されます。アベイラビリティーゾーンごとに異なる時系列を表示したい場合は、**GROUP BY** 句を追加します。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
```

次に、結果を並べ替えて、最高値を最初に表示するようにできます。以下の **ORDER BY** 句では、クエリの一定時間範囲内にある各時系列によって報告された最大値について、対応する時系列が降順で順序付けられます。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
```

タグを使用して結果をさらにフィルタリングすることもできます。例えば、特定の環境でタグ付けされたロードバランサーの結果のみを表示する場合は、WHERE 句にタグフィルタリングを次のように追加できます。

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE LoadBalancer = 'app/load-balancer-1' AND tag.Environment = 'prod' GROUP BY AvailabilityZone ORDER BY MAX() DESC
```

ディメンションの代わりに (またはディメンションに追加して) タグ値で結果をグループ化することもできます。例えば、Application タグでのグループ化は次のようになります。

```
SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone) WHERE tag.Environment = 'prod' GROUP BY tag.Application ORDER BY MAX() DESC
```

さらに、主として「Top N」タイプのクエリを表示したい場合には、**LIMIT** 句を使用します。この最後の例では、`MAX` 値が最上位の 5 つに入っている時系列のみに結果を制限しています。

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
WHERE LoadBalancer = 'app/load-balancer-1'
GROUP BY AvailabilityZone
ORDER BY MAX() DESC
LIMIT 5
```

## クロスアカウントクエリの例
<a name="cloudwatch-metrics-insights-crossaccount"></a>

こうした例は、CloudWatch クロスアカウントオブザーバビリティにモニタリングアカウントとして設定されたアカウントで実行する場合に有効です。

次の例では、ソースアカウント 123456789012 内の Amazon EC2 インスタンスをすべて検索して、その平均を返しています。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId ='123456789012'
```

次の例では、リンクされたすべてのソースアカウント内の `AWS/EC2` で `CPUUtilization` メトリクスをクエリし、アカウント ID とインスタンスタイプで結果をグループ化しています。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
GROUP BY AWS.AccountId, InstanceType
```

次の例では、モニタリングアカウント自体で `CPUUtilization` をクエリしています。

```
SELECT AVG(CpuUtilization) 
FROM "AWS/EC2" 
WHERE AWS.AccountId = CURRENT_ACCOUNT_ID()
```

# 予約済みキーワード
<a name="cloudwatch-metrics-insights-reserved-keywords"></a>

以下が、CloudWatch Metrics Insights での予約キーワードです。これらの単語が、クエリ内の名前空間、メトリクス名、またはラベルキーに含まれている場合、その単語は二重引用符で囲む必要があります。予約キーワードでは大文字と小文字が区別されません。

```
"ABORT" "ABORTSESSION" "ABS" "ABSOLUTE" "ACCESS" "ACCESSIBLE" "ACCESS_LOCK" "ACCOUNT" "ACOS" "ACOSH" "ACTION" "ADD" "ADD_MONTHS"
"ADMIN" "AFTER" "AGGREGATE" "ALIAS" "ALL" "ALLOCATE" "ALLOW" "ALTER" "ALTERAND" "AMP" "ANALYSE" "ANALYZE" "AND" "ANSIDATE" "ANY" "ARE" "ARRAY",
"ARRAY_AGG" "ARRAY_EXISTS" "ARRAY_MAX_CARDINALITY" "AS" "ASC" "ASENSITIVE" "ASIN" "ASINH" "ASSERTION" "ASSOCIATE" "ASUTIME" "ASYMMETRIC" "AT",
"ATAN" "ATAN2" "ATANH" "ATOMIC" "AUDIT" "AUTHORIZATION" "AUX" "AUXILIARY" "AVE" "AVERAGE" "AVG" "BACKUP" "BEFORE" "BEGIN" "BEGIN_FRAME" "BEGIN_PARTITION",
"BETWEEN" "BIGINT" "BINARY" "BIT" "BLOB" "BOOLEAN" "BOTH" "BREADTH" "BREAK" "BROWSE" "BT" "BUFFERPOOL" "BULK" "BUT" "BY" "BYTE" "BYTEINT" "BYTES" "CALL",
"CALLED" "CAPTURE" "CARDINALITY" "CASCADE" "CASCADED" "CASE" "CASESPECIFIC" "CASE_N" "CAST" "CATALOG" "CCSID" "CD" "CEIL" "CEILING" "CHANGE" "CHAR",
"CHAR2HEXINT" "CHARACTER" "CHARACTERS" "CHARACTER_LENGTH" "CHARS" "CHAR_LENGTH" "CHECK" "CHECKPOINT" "CLASS" "CLASSIFIER" "CLOB" "CLONE" "CLOSE" "CLUSTER",
"CLUSTERED" "CM" "COALESCE" "COLLATE" "COLLATION" "COLLECT" "COLLECTION" "COLLID" "COLUMN" "COLUMN_VALUE" "COMMENT" "COMMIT" "COMPLETION" "COMPRESS" "COMPUTE",
"CONCAT" "CONCURRENTLY" "CONDITION" "CONNECT" "CONNECTION" "CONSTRAINT" "CONSTRAINTS" "CONSTRUCTOR" "CONTAINS" "CONTAINSTABLE" "CONTENT" "CONTINUE" "CONVERT",
"CONVERT_TABLE_HEADER" "COPY" "CORR" "CORRESPONDING" "COS" "COSH" "COUNT" "COVAR_POP" "COVAR_SAMP" "CREATE" "CROSS" "CS" "CSUM" "CT" "CUBE" "CUME_DIST",
"CURRENT" "CURRENT_CATALOG" "CURRENT_DATE" "CURRENT_DEFAULT_TRANSFORM_GROUP" "CURRENT_LC_CTYPE" "CURRENT_PATH" "CURRENT_ROLE" "CURRENT_ROW" "CURRENT_SCHEMA",
"CURRENT_SERVER" "CURRENT_TIME" "CURRENT_TIMESTAMP" "CURRENT_TIMEZONE" "CURRENT_TRANSFORM_GROUP_FOR_TYPE" "CURRENT_USER" "CURRVAL" "CURSOR" "CV" "CYCLE" "DATA",
"DATABASE" "DATABASES" "DATABLOCKSIZE" "DATE" "DATEFORM" "DAY" "DAYS" "DAY_HOUR" "DAY_MICROSECOND" "DAY_MINUTE" "DAY_SECOND" "DBCC" "DBINFO" "DEALLOCATE" "DEC",
"DECFLOAT" "DECIMAL" "DECLARE" "DEFAULT" "DEFERRABLE" "DEFERRED" "DEFINE" "DEGREES" "DEL" "DELAYED" "DELETE" "DENSE_RANK" "DENY" "DEPTH" "DEREF" "DESC" "DESCRIBE",
"DESCRIPTOR" "DESTROY" "DESTRUCTOR" "DETERMINISTIC" "DIAGNOSTIC" "DIAGNOSTICS" "DICTIONARY" "DISABLE" "DISABLED" "DISALLOW" "DISCONNECT" "DISK" "DISTINCT",
"DISTINCTROW" "DISTRIBUTED" "DIV" "DO" "DOCUMENT" "DOMAIN" "DOUBLE" "DROP" "DSSIZE" "DUAL" "DUMP" "DYNAMIC" "EACH" "ECHO" "EDITPROC" "ELEMENT" "ELSE" "ELSEIF",
"EMPTY" "ENABLED" "ENCLOSED" "ENCODING" "ENCRYPTION" "END" "END-EXEC" "ENDING" "END_FRAME" "END_PARTITION" "EQ" "EQUALS" "ERASE" "ERRLVL" "ERROR" "ERRORFILES",
"ERRORTABLES" "ESCAPE" "ESCAPED" "ET" "EVERY" "EXCEPT" "EXCEPTION" "EXCLUSIVE" "EXEC" "EXECUTE" "EXISTS" "EXIT" "EXP" "EXPLAIN" "EXTERNAL" "EXTRACT" "FALLBACK
"FALSE" "FASTEXPORT" "FENCED" "FETCH" "FIELDPROC" "FILE" "FILLFACTOR" "FILTER" "FINAL" "FIRST" "FIRST_VALUE" "FLOAT" "FLOAT4" "FLOAT8" "FLOOR" 
"FOR" "FORCE" "FOREIGN" "FORMAT" "FOUND" "FRAME_ROW" "FREE" "FREESPACE" "FREETEXT" "FREETEXTTABLE" "FREEZE" "FROM" "FULL" "FULLTEXT" "FUNCTION" 
"FUSION" "GE" "GENERAL" "GENERATED" "GET" "GIVE" "GLOBAL" "GO" "GOTO" "GRANT" "GRAPHIC" "GROUP" "GROUPING" "GROUPS" "GT" "HANDLER" "HASH" 
"HASHAMP" "HASHBAKAMP" "HASHBUCKET" "HASHROW" "HAVING" "HELP" "HIGH_PRIORITY" "HOLD" "HOLDLOCK" "HOUR" "HOURS" "HOUR_MICROSECOND" "HOUR_MINUTE" 
"HOUR_SECOND" "IDENTIFIED" "IDENTITY" "IDENTITYCOL" "IDENTITY_INSERT" "IF" "IGNORE" "ILIKE" "IMMEDIATE" "IN" "INCLUSIVE" "INCONSISTENT" "INCREMENT" 
"INDEX" "INDICATOR" "INFILE" "INHERIT" "INITIAL" "INITIALIZE" "INITIALLY" "INITIATE" "INNER" "INOUT" "INPUT" "INS" "INSENSITIVE" "INSERT" "INSTEAD" 
"INT" "INT1" "INT2" "INT3" "INT4" "INT8" "INTEGER" "INTEGERDATE" "INTERSECT" "INTERSECTION" "INTERVAL" "INTO" "IO_AFTER_GTIDS" "IO_BEFORE_GTIDS" 
"IS" "ISNULL" "ISOBID" "ISOLATION" "ITERATE" "JAR" "JOIN" "JOURNAL" "JSON_ARRAY" "JSON_ARRAYAGG" "JSON_EXISTS" "JSON_OBJECT" "JSON_OBJECTAGG" 
"JSON_QUERY" "JSON_TABLE" "JSON_TABLE_PRIMITIVE" "JSON_VALUE" "KEEP" "KEY" "KEYS" "KILL" "KURTOSIS" "LABEL" "LAG" "LANGUAGE" "LARGE" "LAST" 
"LAST_VALUE" "LATERAL" "LC_CTYPE" "LE" "LEAD" "LEADING" "LEAVE" "LEFT" "LESS" "LEVEL" "LIKE" "LIKE_REGEX" "LIMIT" "LINEAR" "LINENO" "LINES" 
"LISTAGG" "LN" "LOAD" "LOADING" "LOCAL" "LOCALE" "LOCALTIME" "LOCALTIMESTAMP" "LOCATOR" "LOCATORS" "LOCK" "LOCKING" "LOCKMAX" "LOCKSIZE" "LOG" 
"LOG10" "LOGGING" "LOGON" "LONG" "LONGBLOB" "LONGTEXT" "LOOP" "LOWER" "LOW_PRIORITY" "LT" "MACRO" "MAINTAINED" "MAP" "MASTER_BIND" 
"MASTER_SSL_VERIFY_SERVER_CERT" "MATCH" "MATCHES" "MATCH_NUMBER" "MATCH_RECOGNIZE" "MATERIALIZED" "MAVG" "MAX" "MAXEXTENTS" "MAXIMUM" "MAXVALUE" 
"MCHARACTERS" "MDIFF" "MEDIUMBLOB" "MEDIUMINT" "MEDIUMTEXT" "MEMBER" "MERGE" "METHOD" "MICROSECOND" "MICROSECONDS" "MIDDLEINT" "MIN" "MINDEX" 
"MINIMUM" "MINUS" "MINUTE" "MINUTES" "MINUTE_MICROSECOND" "MINUTE_SECOND" "MLINREG" "MLOAD" "MLSLABEL" "MOD" "MODE" "MODIFIES" "MODIFY" 
"MODULE" "MONITOR" "MONRESOURCE" "MONSESSION" "MONTH" "MONTHS" "MSUBSTR" "MSUM" "MULTISET" "NAMED" "NAMES" "NATIONAL" "NATURAL" "NCHAR" "NCLOB" 
"NE" "NESTED_TABLE_ID" "NEW" "NEW_TABLE" "NEXT" "NEXTVAL" "NO" "NOAUDIT" "NOCHECK" "NOCOMPRESS" "NONCLUSTERED" "NONE" "NORMALIZE" "NOT" "NOTNULL" 
"NOWAIT" "NO_WRITE_TO_BINLOG" "NTH_VALUE" "NTILE" "NULL" "NULLIF" "NULLIFZERO" "NULLS" "NUMBER" "NUMERIC" "NUMPARTS" "OBID" "OBJECT" "OBJECTS" 
"OCCURRENCES_REGEX" "OCTET_LENGTH" "OF" "OFF" "OFFLINE" "OFFSET" "OFFSETS" "OLD" "OLD_TABLE" "OMIT" "ON" "ONE" "ONLINE" "ONLY" "OPEN" "OPENDATASOURCE" 
"OPENQUERY" "OPENROWSET" "OPENXML" "OPERATION" "OPTIMIZATION" "OPTIMIZE" "OPTIMIZER_COSTS" "OPTION" "OPTIONALLY" "OR" "ORDER" "ORDINALITY" "ORGANIZATION" 
"OUT" "OUTER" "OUTFILE" "OUTPUT" "OVER" "OVERLAPS" "OVERLAY" "OVERRIDE" "PACKAGE" "PAD" "PADDED" "PARAMETER" "PARAMETERS" "PART" "PARTIAL" "PARTITION" 
"PARTITIONED" "PARTITIONING" "PASSWORD" "PATH" "PATTERN" "PCTFREE" "PER" "PERCENT" "PERCENTILE" "PERCENTILE_CONT" "PERCENTILE_DISC" "PERCENT_RANK" "PERIOD" "PERM" 
"PERMANENT" "PIECESIZE" "PIVOT" "PLACING" "PLAN" "PORTION" "POSITION" "POSITION_REGEX" "POSTFIX" "POWER" "PRECEDES" "PRECISION" "PREFIX" "PREORDER" 
"PREPARE" "PRESERVE" "PREVVAL" "PRIMARY" "PRINT" "PRIOR" "PRIQTY" "PRIVATE" "PRIVILEGES" "PROC" "PROCEDURE" "PROFILE" "PROGRAM" "PROPORTIONAL" 
"PROTECTION" "PSID" "PTF" "PUBLIC" "PURGE" "QUALIFIED" "QUALIFY" "QUANTILE" "QUERY" "QUERYNO" "RADIANS" "RAISERROR" "RANDOM" "RANGE" "RANGE_N" "RANK" 
"RAW" "READ" "READS" "READTEXT" "READ_WRITE" "REAL" "RECONFIGURE" "RECURSIVE" "REF" "REFERENCES" "REFERENCING" "REFRESH" "REGEXP" "REGR_AVGX" "REGR_AVGY" 
"REGR_COUNT" "REGR_INTERCEPT" "REGR_R2" "REGR_SLOPE" "REGR_SXX" "REGR_SXY" "REGR_SYY" "RELATIVE" "RELEASE" "RENAME" "REPEAT" "REPLACE" "REPLICATION" 
"REPOVERRIDE" "REQUEST" "REQUIRE" "RESIGNAL" "RESOURCE" "RESTART" "RESTORE" "RESTRICT" "RESULT" "RESULT_SET_LOCATOR" "RESUME" "RET" "RETRIEVE" "RETURN" 
"RETURNING" "RETURNS" "REVALIDATE" "REVERT" "REVOKE" "RIGHT" "RIGHTS" "RLIKE" "ROLE" "ROLLBACK" "ROLLFORWARD" "ROLLUP" "ROUND_CEILING" "ROUND_DOWN" 
"ROUND_FLOOR" "ROUND_HALF_DOWN" "ROUND_HALF_EVEN" "ROUND_HALF_UP" "ROUND_UP" "ROUTINE" "ROW" "ROWCOUNT" "ROWGUIDCOL" "ROWID" "ROWNUM" "ROWS" "ROWSET" 
"ROW_NUMBER" "RULE" "RUN" "RUNNING" "SAMPLE" "SAMPLEID" "SAVE" "SAVEPOINT" "SCHEMA" "SCHEMAS" "SCOPE" "SCRATCHPAD" "SCROLL" "SEARCH" "SECOND" "SECONDS" 
"SECOND_MICROSECOND" "SECQTY" "SECTION" "SECURITY" "SECURITYAUDIT" "SEEK" "SEL" "SELECT" "SEMANTICKEYPHRASETABLE" "SEMANTICSIMILARITYDETAILSTABLE" 
"SEMANTICSIMILARITYTABLE" "SENSITIVE" "SEPARATOR" "SEQUENCE" "SESSION" "SESSION_USER" "SET" "SETRESRATE" "SETS" "SETSESSRATE" "SETUSER" "SHARE" "SHOW" 
"SHUTDOWN" "SIGNAL" "SIMILAR" "SIMPLE" "SIN" "SINH" "SIZE" "SKEW" "SKIP" "SMALLINT" "SOME" "SOUNDEX" "SOURCE" "SPACE" "SPATIAL" "SPECIFIC" "SPECIFICTYPE" 
"SPOOL" "SQL" "SQLEXCEPTION" "SQLSTATE" "SQLTEXT" "SQLWARNING" "SQL_BIG_RESULT" "SQL_CALC_FOUND_ROWS" "SQL_SMALL_RESULT" "SQRT" "SS" "SSL" "STANDARD" 
"START" "STARTING" "STARTUP" "STAT" "STATE" "STATEMENT" "STATIC" "STATISTICS" "STAY" "STDDEV_POP" "STDDEV_SAMP" "STEPINFO" "STOGROUP" "STORED" "STORES" 
"STRAIGHT_JOIN" "STRING_CS" "STRUCTURE" "STYLE" "SUBMULTISET" "SUBSCRIBER" "SUBSET" "SUBSTR" "SUBSTRING" "SUBSTRING_REGEX" "SUCCEEDS" "SUCCESSFUL" 
"SUM" "SUMMARY" "SUSPEND" "SYMMETRIC" "SYNONYM" "SYSDATE" "SYSTEM" "SYSTEM_TIME" "SYSTEM_USER" "SYSTIMESTAMP" "TABLE" "TABLESAMPLE" "TABLESPACE" "TAN" 
"TANH" "TBL_CS" "TEMPORARY" "TERMINATE" "TERMINATED" "TEXTSIZE" "THAN" "THEN" "THRESHOLD" "TIME" "TIMESTAMP" "TIMEZONE_HOUR" "TIMEZONE_MINUTE" "TINYBLOB" 
"TINYINT" "TINYTEXT" "TITLE" "TO" "TOP" "TRACE" "TRAILING" "TRAN" "TRANSACTION" "TRANSLATE" "TRANSLATE_CHK" "TRANSLATE_REGEX" "TRANSLATION" "TREAT" 
"TRIGGER" "TRIM" "TRIM_ARRAY" "TRUE" "TRUNCATE" "TRY_CONVERT" "TSEQUAL" "TYPE" "UC" "UESCAPE" "UID" "UNDEFINED" "UNDER" "UNDO" "UNION" "UNIQUE" 
"UNKNOWN" "UNLOCK" "UNNEST" "UNPIVOT" "UNSIGNED" "UNTIL" "UPD" "UPDATE" "UPDATETEXT" "UPPER" "UPPERCASE" "USAGE" "USE" "USER" "USING" "UTC_DATE" 
"UTC_TIME" "UTC_TIMESTAMP" "VALIDATE" "VALIDPROC" "VALUE" "VALUES" "VALUE_OF" "VARBINARY" "VARBYTE" "VARCHAR" "VARCHAR2" "VARCHARACTER" "VARGRAPHIC" 
"VARIABLE" "VARIADIC" "VARIANT" "VARYING" "VAR_POP" "VAR_SAMP" "VCAT" "VERBOSE" "VERSIONING" "VIEW" "VIRTUAL" "VOLATILE" "VOLUMES" "WAIT" "WAITFOR" 
"WHEN" "WHENEVER" "WHERE" "WHILE" "WIDTH_BUCKET" "WINDOW" "WITH" "WITHIN" "WITHIN_GROUP" "WITHOUT" "WLM" "WORK" "WRITE" "WRITETEXT" "XMLCAST" "XMLEXISTS" 
"XMLNAMESPACES" "XOR" "YEAR" "YEARS" "YEAR_MONTH" "ZEROFILL" "ZEROIFNULL" "ZONE"
```

# CloudWatch での CloudWatch Metrics Insights クエリのアラーム
<a name="cloudwatch-metrics-insights-alarms"></a>

Metrics Insights クエリでアラームを作成できます。これにより、後で更新しなくても複数のリソースを追跡するアラームを作成できます。クエリは、新しいリソースと変化したリソースをキャッチします。例えば、フリートの CPU 使用率を監視するアラームを作成し、アラームの作成後に起動した新しいインスタンスをアラームに自動的に評価させることができます。

CloudWatch クロスアカウントオブザーバビリティに対して設定されたモニタリングアカウントでは、Metrics Insights アラームを使用して、ソースアカウントとモニタリングアカウント自体内のリソースを監視できます。アラームクエリを特定のアカウントに制限する方法や、結果をアカウント ID でグループ化する方法の詳細については、「[CloudWatch Metrics Insights のクエリコンポーネントと構文](cloudwatch-metrics-insights-querylanguage.md)」の「`WHERE`」セクションと「`GROUP BY`」セクションを参照してください。

**アラームクエリでのタグの使用**

AWS リソースタグを使用してメトリクスをフィルタリングおよびグループ化する Metrics Insights クエリでアラームを作成できます。アラームでタグを使用するには、[https://console.aws.amazon.com/connect/](https://console.aws.amazon.com/connect/) で **[設定]** を選択します。**[CloudWatch 設定]** ページの **[テレメトリでリソースタグを有効にする]** で、**[有効化]** を選択します。コンテキスト対応アラームは、リソースの変化に応じて、特定のアプリケーション、環境、またはチームを自動的にモニタリングします。

例えば、特定のアプリケーションでタグ付けされたすべての Amazon EC2 インスタンスの CPU 使用率をモニタリングするアラームを作成できます。

```
SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE tag.Application = 'Orders' AND tag.Environment = 'Prod'
```

タグベースのアラームは、一致するタグを持つリソースを追加または削除するときに自動的に適応し、運用構造に合わせて動的モニタリングします。

**Contents**
+ [

# Metrics Insights CloudWatch アラームの作成
](cloudwatch-metrics-insights-alarm-create.md)

# Metrics Insights CloudWatch アラームの作成
<a name="cloudwatch-metrics-insights-alarm-create"></a>

**コンソールを使用して Metrics Insights クエリでアラームを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、[**Metrics**]、[**All metrics**] を選択します。

1. (オプション) 事前構築のサンプルクエリを実行するには、**[Add query]** (クエリを追加) をクリックした上で、実行するクエリを選択します。または、**[Editor]** (エディタ) をクリックし、サンプルクエリの編集を行った上で、**[Run]** (実行) をクリックしてそのクエリを実行できます。

1. 独自のクエリを作成するには、**[マルチソースクエリ]** を選択します。その後、**[Builder]** (ビルダー)ビューと **[Editor]** (エディタ) ビューのどちらか、あるいはその両方を組み合わせて使用できます。この 2 つのビューはいつでも切り替えが可能で、どちらからも進行中の作業を確認できます。

   **[Builder]** (ビルダー) ビューでは、メトリクスの名前空間、メトリクス名、フィルタ、グループ、および順序付けのオプションを閲覧し選択できます。これらの各オプションについて、それぞれを環境から選択するためのリストが、クエリビルダーから提供されます。

   **[Editor]** (エディタ) では、自分のためのクエリを記述していくことができます。このエディタでは、その時点までにタイプした文字に基づいた入力の候補が表示されます。

   例えば、アラームの Metrics Insights クエリを作成するときに、タグを使用して、よりターゲットを絞ったモニタリングのためにメトリクスをフィルタリングおよびグループ化できます。
   + タグでフィルタリング – `WHERE tag.keyName = 'value'` を使用して特定のタグを持つリソースをモニタリングします。

     ```
     SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE tag.Environment = 'Prod'
     ```
   + タグとディメンションを組み合わせる – タグフィルターを既存のメトリクスディメンションと組み合わせます。

     ```
     SELECT AVG(Duration) FROM "AWS/Lambda" WHERE tag.Application = 'OrderService' AND FunctionName = 'process%'
     ```
**注記**  
タグを使用する場合、アラームは、指定されたタグが評価期間中に関連リソースに存在した場合にのみメトリクスと一致します。

1. クエリの内容に問題がなければ、**[Run]** (実行) をクリックします。

1. [**アラームの作成**] を選択します。

1. [**Conditions (条件)**] で、次のように指定します。

   1. [***メトリクス*が次の時**] で、メトリクスがしきい値より大きい、より小さい、またはしきい値と等しい必要があるかどうかを指定します。[**than... (以下の値)**] で、しきい値を指定します。

   1. [**Additional configuration (追加設定)**] を選択します。[**Datapoints to alarm (アラームを発生させるデータポイント数)**] で、アラームをトリガーするために `ALARM` 状態を維持する必要がある評価期間 (データポイント) の数を指定します。2 つの値が一致する場合は、該当する数の連続した期間でしきい値を超過したときに `ALARM` 状態に移行するアラームを作成します。

      N 個中 M 個のアラームを作成するには、2 番目の値よりも小さい数字を最初の値に指定します。詳細については、「[アラーム評価](alarm-evaluation.md)」を参照してください。

   1. [**Missing data treatment (欠落データの処理)**] 、一部のデータポイントが欠落しているときのアラームによる対処方法を選択します。詳細については、「[CloudWatch アラームの欠落データの処理の設定](alarms-and-missing-data.md)」を参照してください。

1. **[Next]** (次へ) を選択します。

1. [**通知**] で、アラームが `ALARM` 状態、`OK` 状態、または `INSUFFICIENT_DATA` 状態のときに通知するための SNS トピックを選択します。

   同じアラーム状態または複数の異なるアラーム状態について複数の通知を送信するには、[**Add notification (通知の追加)**] を選択します。

   アラームの通知を送信しない場合は、 [**削除**] を選択します。

1. アラームに伴って Auto Scaling、EC2、または Systems Manager アクションを実行するには、該当するボタンを選択し、アラーム状態と実行するアクションを選択します。アラームは、ALARM 状態になったときにのみ、Systems Manager のアクションを実行できます。Systems Manager のアクションの詳細については、「[アラームから OpsItems を作成するように CloudWatch を設定する](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-create-OpsItems-from-CloudWatch-Alarms.html)」および「[Incident creation](https://docs.aws.amazon.com/incident-manager/latest/userguide/incident-creation.html)」を参照してください。
**注記**  
SSM Incident Manager アクションを実行するアラームを作成するには、特定のアクセス許可が必要です。詳細については、[AWS Systems Manager Incident Manager のアイデンティティベースのポリシーの例](https://docs.aws.amazon.com/incident-manager/latest/userguide/security_iam_id-based-policy-examples.html)を参照してください。

1. 完了したら、[**次へ**] を選択します。

1. アラームの名前と説明を入力します。名前には ASCII 文字のみを使用します。続いて、[**次へ**] を選択します。

1. [**Preview and create (プレビューして作成)**] で、情報と条件が正しいことを確認し、[**アラームの作成**] を選択します。

**AWS CLI を使用して Metrics Insights クエリでアラームを作成するには**

`put-metric-alarm` コマンドを使用して、`metrics` パラメータに Metrics Insights クエリを指定します。例えば、次のコマンドは、いずれかのインスタンスの CPU 使用率が 50% を超えた場合に ALARM 状態になるアラームを設定します。

```
aws cloudwatch put-metric-alarm —alarm-name Prod-App-CPU-Alarm —evaluation-periods 1 —comparison-operator GreaterThanThreshold —metrics '[{"Id":"m1","Expression":"SELECT MAX(CPUUtilization) FROM \"AWS/EC2\" WHERE tag.Environment = '\''Prod'\'' AND tag.Application = '\''OrderService'\''", "Period":60}]' —threshold 80
```

# メトリクス数式のクエリで Metrics Insights を使用する
<a name="cloudwatch-metrics-insights-math"></a>

Metrics Insights クエリを、Metric Math 関数への入力として使用することができます。Metric Math 関数の詳細については、「[CloudWatch メトリクスでの数式の使用](using-metric-math.md)」を参照してください。

**GROUP BY** 句を含まない Metrics Insights クエリは単一の時系列を返します。この場合に返される結果は、単一の時系列を入力として受け取る任意の Metric Math 関数で使用できます。

Metrics Insights クエリが **GROUP BY** 句を含む場合には、複数の時系列が返されます。このような結果は、時系列の配列を入力として受け取る任意の Metric Math 関数での使用が可能です。

例えば次のクエリでは、リージョン内にある各バケットにダウンロードされた合計バイト数が、時系列の配列として返されます。

```
SELECT SUM(BytesDownloaded) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket'
GROUP BY BucketName
```

コンソール内または [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) オペレーション内のグラフでは、このクエリの結果は `q1` として表示されます。このクエリは結果をバイト数で返すので、代わりに MB 単位で結果を表示したい場合は、次の Metric Math 関数を使用します。

```
q1/1024/1024
```

# 自然言語を使用した CloudWatch Metrics Insights クエリの生成と更新
<a name="cloudwatch-metrics-insights-query-assist"></a>

 CloudWatch は自然言語クエリ機能をサポートしており、[CloudWatch Metrics Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html) と [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) のクエリを生成し、更新する場合に便利です。

 この機能を使用すると、どのような CloudWatch データを探しているのかを平易な英語で質問し、具体的に説明できます。自然言語機能が働いて、入力したプロンプトに基づいてクエリが生成され、クエリの仕組みを説明した文が 1 行ずつ表示されます。また、さらにデータを詳しく調査できるように、生成されたクエリを更新することもできます。

 お使いの環境によっては、「ネットワーク出力量が最も多い Amazon Elastic Compute Cloud インスタンスはどれですか」や 「実行された読み取り数が上位の 10 個の Amazon DynamoDB テーブルを表示してください」といったプロンプトを入力できます。

**注記**  
自然言語クエリ機能は、一般に 10 のリージョンで使用できます。一部のリージョンでは、この機能は、クエリ プロンプトを処理するために、米国のリージョンに対してクロスリージョン呼び出しを行います。次の表は、サポートされているリージョンを一覧表示し、各リージョンがプロンプトを処理する場所を示しています。  


| サポートされているリージョン | プロンプトが処理されるリージョン | 
| --- | --- | 
|  米国東部 (バージニア北部)  |  米国東部 (バージニア北部)  | 
|  米国東部(オハイオ)  |  米国東部 (バージニア北部)  | 
|  米国西部 (オレゴン)  |  米国西部 (オレゴン)  | 
|  アジアパシフィック (香港)  |  米国西部 (オレゴン)  | 
|  アジアパシフィック (シンガポール)  |  米国西部 (オレゴン)  | 
|  アジアパシフィック (シドニー)  |  米国西部 (オレゴン)  | 
|  アジアパシフィック (東京)  |  アジアパシフィック (東京)  | 
|  欧州 (フランクフルト)  |  欧州 (フランクフルト)  | 
|  欧州 (アイルランド)  |  米国東部 (バージニア北部)  | 
|  欧州 (ストックホルム)  |  米国東部 (バージニア北部)  | 

 この機能を使用して CloudWatch Metrics Insights クエリを生成するには、ビルダーやエディタのビューで CloudWatch Metrics Insights クエリエディタを開き、**[クエリを生成]** を選択します。

**重要**  
 自然言語クエリ機能を使用するには、[CloudWatchFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchFullAccess.html)、[CloudWatchReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchReadOnlyAccess.html)、[CloudWatchFullAccessV2](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/CloudWatchFullAccessV2.html)、[AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)、[ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) のいずれかのポリシーを使用する必要があります。  
 また、新規または既存のカスタマー管理ポリシーまたはインラインポリシーに `cloudwatch:GenerateQuery` アクションを含めることもできます。

## クエリの例
<a name="cloudwatch-metrics-insights-query-assist-examples"></a>

 このセクションの例では、自然言語機能を使用して、クエリを生成し更新する方法について説明します。

**注記**  
 CloudWatch Metrics Insights クエリエディタと構文の詳細については、「[CloudWatch Metrics Insights query components and syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage.html)」を参照してください。

### 例: 自然言語クエリを生成する
<a name="cloudwatch-metrics-insights-query-assist-example-1"></a>

 自然言語を使用してクエリを生成するには、プロンプトを入力し、**[新しいクエリを生成]** を選択します。この例は、基本的な検索を実行するクエリを示しています。

**Prompt**  
 次に、読み込みキャパシティーの消費量が多い上位 10 個の DynamoDB テーブルを検索するように指示するプロンプトの例を示します。

```
Show top 10 DynamoDB Tables by consumed reads
```

**クエリ**  
 次に、このプロンプトに基づいて自然言語機能が生成するクエリの例を示します。プロンプトがクエリの前にあるコメントにどのように表示されるかに注意してください。クエリの後に、クエリの仕組みを説明した文があります。

```
# Show top 10 DynamoDB Tables by consumed reads
SELECT SUM("ConsumedReadCapacityUnits")
FROM "AWS/DynamoDB"
GROUP BY TableName
ORDER BY SUM() DESC
LIMIT 10
# This query selects the sum of consumed read capacity units for each DynamoDB table, groups the results by table name, orders the results from highest to lowest read capacity consumption, and limits the results to the top 10 tables.
```

**注記**  
 プロンプトとクエリの仕組みを説明した文が表示されないようにするには、エディタの歯車アイコンを使用します。

### 例: 自然言語クエリを更新する
<a name="cloudwatch-metrics-insights-query-assist-example-2"></a>

 生成済みのプロンプトを編集し、**[クエリを更新]** を選択することで、クエリを更新できます。

**プロンプトの更新**  
 次の例は、先ほどのプロンプトを更新したものを示しています。読み込みキャパシティーの消費量が多い上位 10 個の DynamoDB テーブルを検索するのではなく、返されるバイト数で結果をソートするように指示しています。

```
Sort by bytes returned instead
```

**クエリの更新**  
 次に、更新したクエリの例を示します。更新したプロンプトが更新したクエリの前にあるコメントにどのように表示されるかに注意してください。クエリの後に、元のクエリがどのように更新されたかを説明した文があります。

```
# Sort by bytes returned instead
SELECT SUM("ReturnedBytes")
FROM "AWS/DynamoDB"
GROUP BY TableName
ORDER BY SUM() DESC
LIMIT 10
# This query modifies the original query to select the sum of returned bytes instead of consumed read capacity units, and orders the results from highest to lowest sum of returned bytes, limiting the results to the top 10 tables.
```

## サービス改善のためのデータ使用をオプトアウトする
<a name="cloudwatch-metrics-insights-query-assist-service-data"></a>

 AI モデルをトレーニングし、該当するクエリを生成するために提供した自然言語プロンプトデータは、サービスを提供して維持するためにのみ使用されます。例えば、CloudWatch Metrics Insights の品質を高めるために使用される可能性があります。お客様の信頼、プライバシー、コンテンツのセキュリティが当社の最優先事項です。詳細については、「[AWSサービス規約](https://aws.amazon.com/service-terms/)」と「[AWSresponsible AI policy](https://aws.amazon.com/machine-learning/responsible-ai/policy/)」を参照してください。

 自然言語クエリの開発や品質改善に自分のコンテンツが使用されないようにオプトアウトするには、AI サービスオプトアウトポリシーを作成します。クエリ生成機能をはじめすべての CloudWatch AI 機能データ収集をオプトアウトするには、CloudWatch のオプトアウトポリシーを作成する必要があります。詳細については、「AWS Organizations ユーザーガイド」の「[AI サービスオプトアウトポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.html)」を参照してください。

# SQL 推論
<a name="cloudwatch-metrics-insights-inference"></a>

CloudWatch Metrics Insights は、特定の SQL クエリの意図を推測するために、いくつかのメカニズムを使用しています。

**Topics**
+ [

## 時間バケット
](#cloudwatch-metrics-insights-inference-timebucketing)
+ [

## フィールド射影
](#cloudwatch-metrics-insights-inference-fieldsprojection)
+ [

## ORDER BY でのグローバルな集計
](#cloudwatch-metrics-insights-inference-OrderBy)

## 時間バケット
<a name="cloudwatch-metrics-insights-inference-timebucketing"></a>

クエリから生成された時系列データポイントは、要求された期間に基づいて時間バケットにロールアップされます。標準 SQL で値を集計するには、明示的な GROUP BY 句を定義して、特定の期間におけるすべての観測値をまとめて収集する必要があります。通常は、時系列データをクエリする際はこのような方法が取られます。ただし、CloudWatch Metrics Insights では、時間バケットを推測することで **GROUP BY** 句を明示的に記述する必要をなくしています。

例えば、1 分の期間を指定しながらクエリを実行すると、その期間中の次の (excluded) までに属するすべての観測値が、タイムバケットの開始時間にロールアップされます。これにより、Metrics Insights での SQL ステートメントがより簡潔になり、冗長性が低くなります。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
```

前出のクエリでは、すべての Amazon EC2 インスタンスにおける平均 CPU 使用率を表す、単一の時系列 (タイムスタンプと値のペア) を返しています。要求された期間が 1 分であると仮定すると、ここで返される各データポイントは、特定の (開始時間を含み終了時間を除く) 1 分間隔の中で測定された、すべての観測値の平均を表すことになります。特定のデータポイントに関連するタイムスタンプは、バケットの開始時刻を示します。

## フィールド射影
<a name="cloudwatch-metrics-insights-inference-fieldsprojection"></a>

Metrics Insights のクエリは、常にタイムスタンプの射影を返します。**SELECT**句では、タイムスタンプ列を指定して、対応する各データポイント値のタイムスタンプを取得する必要はありません。タイムスタンプの計算方法の詳細については、「[時間バケット](#cloudwatch-metrics-insights-inference-timebucketing)」を参照してください。

**GROUP BY** を使用すると、各グループ名も推論され結果に反映されるので、返された時系列をグループ化することができます。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
GROUP BY InstanceId
```

前のクエリでは、各 Amazon EC2 インスタンスに関し時系列を返しています。各時系列は、インスタンス ID の値の後にラベル付けされています。

## ORDER BY でのグローバルな集計
<a name="cloudwatch-metrics-insights-inference-OrderBy"></a>

**ORDER BY** を使用する場合、**FUNCTION()** では、順序付けすべき集計関数 (クエリされたメトリクスでのデータポイント値) を推定します。この集計オペレーションは、クエリされた時間ウィンドウ全体において、個々の時系列内で一致したすべてのデータポイントに対して実行されます。

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
GROUP BY InstanceId
ORDER BY MAX()
LIMIT 10
```

前出のクエリでは、結果セットを 10 エントリに制限しながら、各 Amazon EC2 インスタンスの CPU 使用量を返しています。この結果は、要求された時間ウィンドウ内の個々の時系列について、その最大値に基づいて順序付けられます。**ORDER BY** 句は **LIMIT** の前に適用されます。したがって、順序付けは 10 個を超える時系列に対して計算されることになります。

# Metrics Insights のクォータ
<a name="cloudwatch-metrics-insights-limits"></a>

CloudWatch Metrics Insights には現在、以下のクォータがあります。
+ メトリクス、ウィジェット、アラームグラフで視覚化するために、最大 2 週間のデータをクエリします。直近 3 時間のデータをクエリして、アラーム条件の評価を行うことができます。
+ 1 つのクエリで処理できるメトリクスは 10,000 個以下です。これは、**SELECT**、**FROM**、および **WHERE** 句で 10,000 個を超えるメトリクスが一致した場合でも、クエリは、これらの検出したメトリクスのうち最初の 10,000 個のみを処理することを意味します。
+ 1 つのクエリで 500 を超える時系列を返すことはできません。これは、クエリが 500 個を超えるメトリクスを返すよう指定した場合でも、クエリ結果にすべてのメトリクスが返されるわけではないことを意味します。**ORDER BY** 句を使用すると、処理されているすべてのメトリクスがソートされます。その中から (**ORDER BY** 句に応じ) 最大値または最小値を持つ 500 個が返されます。

  **ORDER BY** 句を含めない場合は、一致したメトリクスの中から、どの 500 個が選択され返されるのかを制御することはできません。
+ 各リージョンで最大 200 個の Metrics Insights アラームを設定できます。
+ Metrics Insights では、高解像度データ (1 分未満の精度で報告されるメトリクスデータ) はサポートされていません。高解像度データをリクエストしてもリクエストは失敗しませんが、出力は 1 分単位で集計されます。
+ 個別の [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) オペレーションに含めることができるクエリは 1 つだけですが、ダッシュボードには、それぞれにクエリを 1 つ含んだ複数のウィジェットを用意することができます。
+ **GROUP BY** または **WHERE** をタグを使用するクエリが、10 個を超えるタグ更新があるメトリクスと一致する場合、10 個のタグが付けられた最新バージョンのメトリクスのみがクエリ結果に含まれます。

# Metrics Insights のサンプルクエリ
<a name="cloudwatch-metrics-insights-queryexamples"></a>

このセクションでは、コピーして直接使用することも、クエリエディタで編集して使用することもできる、有用な CloudWatch Metrics Insights クエリの例を紹介します。これらの例の内のいくつかは、コンソールで既に利用可能な状態であり、**[Metrics]** (メトリクス) ビューで **[Add query]** (クエリを追加) をクリックしてアクセスすることができます。

## Application Load Balancer での例
<a name="cloudwatch-metrics-insights-queryexamples-applicationloadbalancer"></a>

**すべてのロードバランサーでのリクエストの合計数**

```
SELECT SUM(RequestCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer)
```

**最もアクティブな上位 10 個のロードバランサー**

```
SELECT MAX(ActiveConnectionCount) 
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer) 
GROUP BY LoadBalancer 
ORDER BY SUM() DESC 
LIMIT 10
```

## AWS API の使用状況に関する例
<a name="cloudwatch-metrics-insights-queryexamples-APIusage"></a>

**アカウント内の呼び出し数で上位 20 の AWS API**

```
SELECT COUNT(CallCount) 
FROM SCHEMA("AWS/Usage", Class, Resource, Service, Type) 
WHERE Type = 'API' 
GROUP BY Service, Resource 
ORDER BY COUNT() DESC 
LIMIT 20
```

**呼び出しごとにソートされた CloudWatch API**

```
SELECT COUNT(CallCount) 
FROM SCHEMA("AWS/Usage", Class, Resource, Service, Type) 
WHERE Type = 'API' AND Service = 'CloudWatch' 
GROUP BY Resource 
ORDER BY COUNT() DESC
```

## DynamoDB での例
<a name="cloudwatch-metrics-insights-queryexamples-DynamoDB"></a>

**実行された読み取り数で上位 10 のテーブル**

```
SELECT SUM(ProvisionedWriteCapacityUnits)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

**返されたバイト数で上位 10 のテーブル**

```
SELECT SUM(ReturnedBytes)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

**ユーザーエラー数で上位 10 のテーブル**

```
SELECT SUM(UserErrors)
FROM SCHEMA("AWS/DynamoDB", TableName) 
GROUP BY TableName
ORDER BY MAX() DESC LIMIT 10
```

## Amazon Elastic Block Store での例
<a name="cloudwatch-metrics-insights-queryexamples-EBS"></a>

**書き込まれたバイト数で上位 10 のAmazon EBSボリューム**

```
SELECT SUM(VolumeWriteBytes) 
FROM SCHEMA("AWS/EBS", VolumeId) 
GROUP BY VolumeId 
ORDER BY SUM() DESC 
LIMIT 10
```

**Amazon EBS ボリュームでの平均書き込み時間**

```
SELECT AVG(VolumeTotalWriteTime) 
FROM SCHEMA("AWS/EBS", VolumeId)
```

## Amazon EC2 での例
<a name="cloudwatch-metrics-insights-queryexamples-EC2"></a>

**最も高い順にソートされた EC2 インスタンスの CPU 使用量**

```
SELECT AVG(CPUUtilization) 
  FROM SCHEMA("AWS/EC2", InstanceId) 
  GROUP BY InstanceId 
  ORDER BY AVG() DESC
```

**フリート全体での平均 CPU 使用量**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/EC2", InstanceId)
```

**CPU の最高使用量で上位 10 のインスタンス**

```
SELECT MAX(CPUUtilization) 
FROM SCHEMA("AWS/EC2", InstanceId) 
GROUP BY InstanceId 
ORDER BY MAX() DESC 
LIMIT 10
```

**このケースでは、CloudWatch エージェントはアプリケーションごとに `CPUUtilization` メトリクスを収集しています。このクエリは、特定のアプリケーション名について、このメトリクスの平均によるフィルタリングを行います。**

```
SELECT AVG(CPUUtilization)
FROM "AWS/CWAgent"
WHERE ApplicationName = 'eCommerce'
```

## Amazon Elastic Container Service での例
<a name="cloudwatch-metrics-insights-queryexamples-ECS"></a>

**すべての ECS クラスタでの平均 CPU 使用量**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName)
```

**メモリ使用量で上位 10 のクラスタ**

```
SELECT AVG(MemoryUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName) 
GROUP BY ClusterName 
ORDER BY AVG() DESC
LIMIT 10
```

**CPU 使用量で上位 10 のサービス**

```
SELECT AVG(CPUUtilization) 
FROM SCHEMA("AWS/ECS", ClusterName, ServiceName) 
GROUP BY ClusterName, ServiceName 
ORDER BY AVG() DESC 
LIMIT 10
```

**実行中のタスク (Container Insights) 数で上位 10 のサービス**

```
SELECT AVG(RunningTaskCount) 
FROM SCHEMA("ECS/ContainerInsights", ClusterName, ServiceName) 
GROUP BY ClusterName, ServiceName 
ORDER BY AVG() DESC 
LIMIT 10
```

## Amazon Elastic Kubernetes Service Container Insights での例
<a name="cloudwatch-metrics-insights-queryexamples-EKSCI"></a>

**すべての EKS クラスタでの平均 CPU 使用量**

```
SELECT AVG(pod_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName)
```

**ノードの CPU 使用量で上位 10 のクラスタ**

```
SELECT AVG(node_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName) 
GROUP BY ClusterName
ORDER BY AVG() DESC LIMIT 10
```

**ポッドのメモリ使用量で上位 10 のクラスター**

```
SELECT AVG(pop_memory_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName) 
GROUP BY ClusterName
ORDER BY AVG() DESC LIMIT 10
```

**CPU 使用量で上位 10 のノード**

```
SELECT AVG(node_cpu_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName, NodeName) 
GROUP BY ClusterName, NodeName 
ORDER BY AVG() DESC LIMIT 10
```

**メモリ使用量で上位 10 のポッド**

```
SELECT AVG(pod_memory_utilization) 
FROM SCHEMA("ContainerInsights", ClusterName, PodName) 
GROUP BY ClusterName, PodName 
ORDER BY AVG() DESC LIMIT 10
```

## EventBridge での例
<a name="cloudwatch-metrics-insights-queryexamples-EventBridge"></a>

**呼び出し数で上位10 のルール**

```
SELECT SUM(Invocations)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

**失敗した呼び出し数で上位 10 のルール**

```
SELECT SUM(FailedInvocations)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

**一致したルール数で上位 10 のルール**

```
SELECT SUM(MatchedEvents)
FROM SCHEMA("AWS/Events", RuleName) 
GROUP BY RuleName
ORDER BY MAX() DESC LIMIT 10
```

## Kinesis での例
<a name="cloudwatch-metrics-insights-queryexamples-Kinesis"></a>

**書き込まれたバイト数で上位 10 のストリーム**

```
SELECT SUM("PutRecords.Bytes") 
FROM SCHEMA("AWS/Kinesis", StreamName) 
GROUP BY StreamName
ORDER BY SUM() DESC LIMIT 10
```

**ストリーム内の最も早いアイテム数で上位 10 のストリーム**

```
SELECT MAX("GetRecords.IteratorAgeMilliseconds") 
FROM SCHEMA("AWS/Kinesis", StreamName) 
GROUP BY StreamName
ORDER BY MAX() DESC LIMIT 10
```

## Lambda での例
<a name="cloudwatch-metrics-insights-queryexamples-Lambda"></a>

**呼び出し数で順序付けられた Lambda 関数**

```
SELECT SUM(Invocations) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY SUM() DESC
```

**最長実行時間で上位 10 の Lambda 関数**

```
SELECT AVG(Duration) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY MAX() DESC 
LIMIT 10
```

**エラー発生数で上位 10 のLambda 関数**

```
SELECT SUM(Errors) 
FROM SCHEMA("AWS/Lambda", FunctionName) 
GROUP BY FunctionName 
ORDER BY SUM() DESC 
LIMIT 10
```

## CloudWatch Logs での例
<a name="cloudwatch-metrics-insights-queryexamples-CloudWatchLogs"></a>

**受信イベント数で上位 10 のロググループ**

```
SELECT SUM(IncomingLogEvents)
FROM SCHEMA("AWS/Logs", LogGroupName) 
GROUP BY LogGroupName
ORDER BY SUM() DESC LIMIT 10
```

**書き込まれたバイト数で上位 10 のロググループ**

```
SELECT SUM(IncomingBytes)
FROM SCHEMA("AWS/Logs", LogGroupName) 
GROUP BY LogGroupName
ORDER BY SUM() DESC LIMIT 10
```

## Amazon RDS での例
<a name="cloudwatch-metrics-insights-queryexamples-RDS"></a>

**CPU の最大使用量で上位 10 の Amazon RDS インスタンス**

```
SELECT MAX(CPUUtilization)
FROM SCHEMA("AWS/RDS", DBInstanceIdentifier) 
GROUP BY DBInstanceIdentifier
ORDER BY MAX() DESC 
LIMIT 10
```

**書き込み量で上位 10 の Amazon RDS クラスター**

```
SELECT SUM(WriteIOPS)
FROM SCHEMA("AWS/RDS", DBClusterIdentifier) 
GROUP BY DBClusterIdentifier
ORDER BY MAX() DESC 
LIMIT 10
```

## Amazon Simple Storage Service での例
<a name="cloudwatch-metrics-insights-queryexamples-S3"></a>

**バケット別の平均レイテンシー**

```
SELECT AVG(TotalRequestLatency) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket' 
GROUP BY BucketName 
ORDER BY AVG() DESC
```

**ダウンロードされたバイト数で上位 10 のバケット**

```
SELECT SUM(BytesDownloaded) 
FROM SCHEMA("AWS/S3", BucketName, FilterId) 
WHERE FilterId = 'EntireBucket'
GROUP BY BucketName 
ORDER BY SUM() DESC 
LIMIT 10
```

## Amazon Simple Notification Service での例
<a name="cloudwatch-metrics-insights-queryexamples-SNS"></a>

**SNS トピックによって発行されたメッセージの総数**

```
SELECT SUM(NumberOfMessagesPublished) 
FROM SCHEMA("AWS/SNS", TopicName)
```

**発行されたメッセージ数で上位 10 のトピック**

```
SELECT SUM(NumberOfMessagesPublished) 
FROM SCHEMA("AWS/SNS", TopicName) 
GROUP BY TopicName 
ORDER BY SUM() DESC 
LIMIT 10
```

**メッセージ配信の失敗数で上位 10 のトピック**

```
SELECT SUM(NumberOfNotificationsFailed) 
FROM SCHEMA("AWS/SNS", TopicName)
GROUP BY TopicName 
ORDER BY SUM() DESC 
LIMIT 10
```

## Amazon SQS での例
<a name="cloudwatch-metrics-insights-queryexamples-SQS"></a>

**表示可能なメッセージ数で上位 10 のキュー**

```
SELECT AVG(ApproximateNumberOfMessagesVisible)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY AVG() DESC 
LIMIT 10
```

**最もアクティブな上位 10 のキュー**

```
SELECT SUM(NumberOfMessagesSent)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY SUM() DESC 
LIMIT 10
```

**最も初期のメッセージからの経過時間で上位 10 のキュー**

```
SELECT AVG(ApproximateAgeOfOldestMessage)
FROM SCHEMA("AWS/SQS", QueueName) 
GROUP BY QueueName
ORDER BY AVG() DESC 
LIMIT 10
```

# Metrics Insights 用語集
<a name="cloudwatch-metrics-insights-glossary"></a>

**ラベル**  
Metrics Insights では、ラベルはキーと値のペアであり、特定のデータセットを返すようにクエリの範囲を指定するために使用します。また、クエリ結果を個別の時系列に分割する際の基準を定義するためにも使用できます。ラベルキーは SQL での列名に似ています。ラベルは CloudWatch メトリクスのディメンションである必要があります。

**監視**  
観測値とは、特定の時間に特定のメトリクスについて記録された値です。

# Metrics Insights のトラブルシューティング
<a name="cloudwatch-metrics-insights-troubleshooting"></a>

## 結果に、実際には使用していない「Other」というディメンションが含まれている
<a name="cloudwatch-metrics-insights-troubleshooting-other"></a>

これは、このクエリに含まれる **GROUP BY** 句で指定されているラベルキーが、このクエリによって返されるメトリクスの一部で使用されていないことを意味します。この場合、`Other` という名前の NULL グループは返されません。そのラベルキーを含まないメトリクスは、おそらく、そのラベルキーの値すべてから集約された値を返す、集計メトリクスです。

 例えば、次のようなクエリがあるとします。

```
SELECT AVG(Faults) 
FROM MyCustomNamespace 
GROUP BY Operation, ServiceName
```

返されたメトリクスの一部に、ディメンションとして `ServiceName` が含まれない場合、これらのメトリクスは、`ServiceName` の値として `Other` が割り当てられて表示されます。

結果に「Other」が表示されないようにするには、**FROM** 句で **SCHEMA** を使用します。以下にその例を示します。

```
SELECT AVG(Faults) 
FROM SCHEMA(MyCustomNamespace, Operation)
GROUP BY Operation, ServiceName
```

これにより、結果として返されるメトリクスは、`Operation` と `ServiceName` 両方のディメンションを持つもののみに制限されます。

## グラフ内の最も古いタイムスタンプは、他のメトリクスよりも低いメトリクス値を持っています
<a name="cloudwatch-metrics-insights-troubleshooting-oldest"></a>

CloudWatch Metrics Insights は、最大 2 週間の履歴データをサポートしています。1 分を超える周期でグラフを作成する場合、最も古いデータポイントが、想定される値とは異なることがあります。これは、CloudWatch Metrics Insights クエリが 2 週間の保持期間内のデータのみを返すためです。この場合、クエリ内の最も古いデータポイントは、そのデータポイントの期間内のすべての観測値を返すのではなく、2 週間の境界内に測定された観測値のみを返します。

## タグベースのクエリを使用する際に、異なる期間にわたってメトリクス値が一貫していない
<a name="cloudwatch-metrics-insights-troubleshooting-tag-mutations"></a>

CloudWatch Metrics Insights クエリでタグを持つ `WHERE` または `GROUP BY` 句を使用すると、選択した期間に応じて異なるメトリクス値が表示される場合があります。例えば、6 時間の期間はピーク値 20 を示す場合があり、1 時間の期間は同じ時間枠で 2 のみを示します。

これは、タグタイムスタンプが第 2 レベルの解像度で保存され、メトリクスデータポイントが期間境界 (例: 1 分または 1 時間ごとの開始) に調整されているために発生します。どのデータポイントがタグ時間範囲に一致するかを決定するために、CloudWatch は 1 つの期間を減算して範囲の開始を調整します。期間が大きいほど、この調整でタグタイムスタンプと最も早く含まれるデータポイントの間のギャップが広くなり、範囲の開始に近いデータポイントが除外される可能性があります。

次の例は、これがクエリ結果にどのように影響するかを示しています。メトリクスには、 `env=beta` (00:00～01:30) と `env=gamma` (01:30～03:00) の 2 つのタグ値があります。各タグは 90 分のデータをカバーし、合計は 270 です。

![\[タグベースのクエリ結果を 1 分および 3 時間の期間と比較する 2 つの CloudWatch メトリクスグラフ。\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/images/metrics-insights-tag-alignment.png)



| **1 分の期間がある env=beta** | 統計 | 予想 | Returned | 差分 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 271 | \$11 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 91 | \$11 | 


| **1 分の期間がある env=gamma** | 統計 | 予想 | Returned | 差分 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 275 | 5\$1 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 91 | \$11 | 

1 分の期間では、アラインメント調整は小さく (1 分)、タグごとに 1 つの追加データポイントのみが含まれます。3 時間の期間では、調整はクエリ範囲全体に及びます:


| **3 時間の期間がある env=beta** | 統計 | 予想 | Returned | 差分 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 540 | \$1270 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 180 | \$190 | 


| **3 時間の期間がある env=gamma** | 統計 | 予想 | Returned | 差分 | 
| --- | --- | --- | --- | --- | 
| SUM | 270 | 540 | \$1270 | 
| AVG | 3.0 | 3.0 | 0 | 
| MIN | 1 | 1 | 0 | 
| MAX | 5 | 5 | 0 | 
| SAMPLE\$1COUNT | 90 | 180 | \$190 | 

3 時間の期間では、単一の集計データポイントのタイムスタンプが両方の調整された範囲内に収まるため、両方のタグはデータセット全体 (SUM=540、SAMPLE\$1COUNT=180) を返します。タグの境界は効果的に消去されます。

この動作の影響を減らすには、次の方法を試してください:
+ **より短い集計期間を使用する。**より短い期間 (1 分や 5 分など) は、タグのタイムスタンプの 2 番目のレベルの解像度により密接に一致します。これにより、アライメントギャップが最小限に抑えられ、関連するすべてのデータポイントが含まれる可能性が高くなります。
+ **タグの代わりにディメンションベースのフィルタリングを使用する。**ユースケースで許可されている場合は、タグではなくディメンションでフィルタリングします。ディメンションベースのクエリは、この動作の影響を受けません。例えば、`WHERE tag."my-tag" = 'my-value'` ではなく `WHERE InstanceId = 'i-1234567890abcdef0'` を使用します。
+ **一貫した詳細度でクエリを実行する。**異なる時間枠間でメトリクスデータを比較する場合は、同じ期間を使用して、アライメント調整によって生じる予期しない違いを回避します。