

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# メトリクスクエリエディタの使用
<a name="CloudWatch-using-the-metric-query-editor"></a>

メトリクスクエリエディタでは、「**メトリクス検索**」と「**メトリクスクエリ**」の 2 種類のクエリを構築できます。**[メトリクスクエリ]** は、データのクエリに CloudWatch Metrics Insights を使用します。

## 一般的なクエリエディタのフィールド構成
<a name="metrics-insights-common-fields"></a>

 次の 3 つのフィールドは「**メトリクス検索**」モードと「**メトリクスクエリ**」モードの両方に共通して存在します。

 **共通フィールド**

**ID**  
`GetMetricData` API では、すべてのクエリに一意の ID が必要です。このフィールドに ID を指定します。ID には、数字、文字、アンダースコアを使用できます (小文字で始める必要があります)。ID が指定されていない場合、Amazon Managed Grafana は `query[refId of the current query row]` のパターンの ID を生成します。例えば、`queryA` はパネルエディタの最初のクエリ行を表します。

**Period**  
期間とは、特定の CloudWatch 統計に関連付けられた時間長です。期間は秒単位で定義されます。値には 1、5、10、30、の他に 60 の倍数を使用できます。期間フィールドを空白のままにするか、`auto` に設定すると、時間範囲と CloudWatch 保持期間ポリシーを基に自動的に計算されます。使用される式は `time range in seconds / 2000` で、保持期間を基に期間を除外した後、事前に定められた期間 [60、300、900、3600、21600、86400] の中から次に大きな値に移動します。Amazon Managed Grafana が使用している期間を確認するには、クエリエディタで [**クエリプレビューを表示**] を選択します。

**エイリアス**  
次のエイリアスパターンが適用されます。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/grafana/latest/userguide/CloudWatch-using-the-metric-query-editor.html)

# メトリクス検索オプションの使用
<a name="CloudWatch-using-the-metric-search"></a>

 **メトリクス検索**で有効なクエリを作成するには、名前空間、メトリクス名、および少なくとも 1 つの統計を指定する必要があります。**[完全一致]** が有効になっている場合、クエリするメトリクスのすべてのディメンションも指定する必要があります。メトリクススキーマは完全に一致する必要があります。詳細については、「[CloudWatch 検索式構文](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html)」を参照してください。

**[完全一致]** がオフになっている場合、フィルタリングするディメンションの指定数に制限はありません。フィルター条件に一致するメトリクスは最大 100 個まで返されます。

## ディメンションワイルドカード文字を使用した動的クエリ
<a name="dynamic-queries-using-dimension-wildcards"></a>

 1 つ以上のディメンション値にアスタリスク (`*`) ワイルドカード文字を使用して、メトリクスの動的リストをモニタリングできます。

 これにより、EC2 インスタンスやコンテナなどの AWS リソースのメトリクスをモニタリングできます。立ちエバ、Auto Scaling イベントの一部として新しいインスタンスが作成されると、グラフに自動で表示されるため、新しいインスタンス ID を追跡する必要はありません。この機能によるメトリクスの取得は現在、最大 100 個に制限されています。[**クエリプレビューを表示**] を選択すると、ワイルドカード文字をサポートするために自動的に構築された検索式を確認することができます。

 デフォルトでは、検索式は、クエリ対象のメトリクスが定義されたディメンション名と正確に一致するように定義されています。つまり、この例では、名前が `InstanceId` のディメンションが 1 つだけのメトリクスのみが返されます。

 他のディメンションが定義されているメトリクスも含めるには、**[完全一致]** をオフにします。**[完全一致]** をオフにすると、ワイルドカード文字を使用しなくても検索式が作成されます。Grafana は、少なくとも名前空間、メトリクス名、および定義されたすべてのディメンションに一致するメトリクスを検索します。

## 複数値のテンプレート変数
<a name="cloudwatch-multi-value-template-variables"></a>

 複数値のテンプレート変数からディメンション値を定義する場合、検索式を使用して一致するメトリクスをクエリします。これにより、1 つのクエリで複数のテンプレート変数を使用できます。**[完全一致]** オプションがオフになっているクエリには、テンプレート変数を使用することもできます。

 検索式は現在 1024 文字に制限されているため、値のリストが長い場合、クエリが失敗することがあります。特定のディメンション名の値を持つすべてのメトリクスをクエリする場合は、`All` オプションの代わりにアスタリスク (`*`) ワイルドカード文字を使用することをお勧めします。

 複数値のテンプレート変数の使用は、ディメンション値でのみサポートされます。`Region`、`Namespace`、または `Metric Name` の複数値テンプレート変数の使用はサポートされていません。

## メトリクス数式を使用する
<a name="cloudwatch-metric-math-expressions"></a>

 CloudWatch のメトリクスに対して数学的な関数を使って操作を行うことで、新しい時系列メトリクスを作成できます。算術演算子、単項減算、その他の関数がサポートされており、CloudWatch メトリクスに適用することができます。メトリクス数式の詳細については、「[メトリクス数式の使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)」を参照してください。

 例えば、メトリクスに算術演算を適用するには、未加工のメトリクスに ID (一意の文字列) を指定します。その後、この ID を使用して、新しいメトリクスの `Expression` フィールドで算術演算を適用できます。

 `Expression` フィールドを使用して `queryA * 2` などの別のクエリを参照する場合、そのクエリを基にアラートルールを作成することはできません。

## Period
<a name="cloudwatch-period"></a>

 期間とは、特定の Amazon CloudWatch 統計に関連付けられた時間長です。期間は秒単位で定義されます。値には 1、5、10、30、の他に 60 の倍数を使用できます。

期間フィールドを空白のままにするか、**[自動]** に設定すると、時間範囲を基に自動的に計算されます。使用される式は `time range in seconds / 2000` で、事前定義された期間の配列 `[60, 300, 900, 3600, 21600, 86400]` 内の次に高い値に進みます。Amazon Managed Grafana が使用している期間を確認するには、クエリエディタで **[クエリプレビューを表示]** を選択します。

## Grafana パネルから CloudWatch コンソールへのディープリンク
<a name="deep-linking-from-grafana-panels-to-the-cloudwatch-console"></a>

 パネルで時系列を選択するとコンテキストメニューが表示され、その中に [**CloudWatch コンソールで表示**] のリンクが表示されます。リンクを選択すると新しいタブが開き、そのクエリのすべてのメトリクスが表示された CloudWatch コンソールに移動します。リンククリック時に CloudWatch コンソールにサインインしていない場合、サインインページに転送されます。提供されたリンクは に有効です AWS アカウント が、Grafana で選択したデータソース AWS アカウント に対応する にサインインしている場合にのみ、正しいメトリクスが表示されます。

 この機能は、メトリクス数式に基づくメトリクスでは使用できません。

# メトリクスクエリを使用して CloudWatch Metrics Insights データをクエリする
<a name="CloudWatch-using-the-metric-query"></a>

**注記**  
Amazon CloudWatch Metrics Insights はプレビュー中です。CloudWatch Metrics Insights の機能は、すべての AWS アカウントが利用できます。機能は変更される可能性があります。

 CloudWatch Metrics Insights のデータは、**[メトリクスクエリエディタ]**で `metric query` モードを選択することでクエリできます。

 CloudWatch Metrics Insights は、高性能な SQL クエリエンジンであり、これにより、メトリクスに対し大量のクエリを実行できます。これは、すべての CloudWatch メトリクス内の傾向とパターンをリアルタイムで特定するために使用できる、高速で柔軟な SQL ベースのクエリエンジンです。SQL の方言を使用します。Metrics Insights のクエリ構文の詳細については、「[クエリ構文とキーワード](#metrics-insights-syntax-keywords)」を参照してください。

## クエリ構文とキーワード
<a name="metrics-insights-syntax-keywords"></a>

CloudWatch Metrics Insights では SQL の方言を使用しています。以下にクエリの構文例を示します。

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

 キーワードでは大文字と小文字は区別されませんが、識別子では大文字と小文字は区別されます。識別子には、メトリクスの名前、名前空間、ディメンションが含まれます。

 次の表に、クエリのキーワードとその説明を示します。


|  キーワード  |  説明  | 
| --- | --- | 
|  FUNCTION  |  必須。使用する集計関数とクエリするメトリクスの名前を指定します。有効な値は、AVG、COUNT、MAX、MIN、SUM です。 | 
|  MetricName   |  必須。例えば、CPUUtilization と指定します。 | 
|  FROM  |  必須。メトリクスのソースを指定します。クエリするメトリクスを含むメトリクス名前空間、または、SCHEMA テーブル関数のどちらかを指定します。名前空間の例は、AWS/EC2、AWS/Lambda などです。 | 
|  SCHEMA  |  (任意) クエリ結果をフィルタリングして、完全に一致するメトリクス、または一致しないメトリクスのみを表示します。 | 
|  WHERE  |  (任意) 結果をフィルタリングして、指定した式に一致するメトリクスのみを表示します。例えば、WHERE InstanceType \$1= 'c3.4xlarge'。 | 
|  GROUP BY  |  (任意) クエリ結果を複数の時系列にグループ化します。例えば、GROUP BY ServiceName。 | 
|  ORDER BY  |  (任意) 返される時系列の順序を指定します。ASC と DESC を使用できます。 | 
|  LIMIT  |  (任意) 返される時系列の数を制限します。 | 

次に例をいくつか示します。
+ 

  ```
  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)
  ```

   CloudWatch に報告された 1 つのディメンション (`InstanceId`) を持つ `CPUUtilization` メトリクスのみを一致させます。
+ 

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

   CloudWatch に `AWS/ApplicationELB` から報告された 2 つのディメンション（`LoadBalancer` と `AvailabilityZone`）を持つ `RequestCount` メトリクスのみを一致させます。

 ラベル値は一重引用符で囲む必要があります。

### エスケープ文字
<a name="escape-characters"></a>

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

 文字、数字、アンダースコア (`_`) 以外の文字を含むメトリクスの名前空間、メトリクス名、ラベルキーは、二重引用符で囲む必要があります。例えば、`SELECT MAX("My.Metric")` と指定します。これらのいずれかに `Bytes"Input"` のように二重引用符自体が含まれている場合は、`SELECT AVG("Bytes\"Input\"")` のように、その二重引用符をバックスラッシュでエスケープする必要があります。メトリクス名前空間、メトリクス名、またはラベルキーに、Metrics Insights での予約キーワードが含まれている場合は、これらも二重引用符で囲む必要があります。例えば、`LIMIT` という名前のメトリクスを指定するのであれば、`SELECT AVG("LIMIT")` のようになります。また、予約キーワードを含まない場合に、名前空間、メトリクス名、またはラベルを二重引用符で囲んだとしても、エラーとはなりません。

## ビルダーモードとコードモード
<a name="metrics-insights-query-modes"></a>

クエリを作成するモードには、`Builder` モードと `Code` モードがあります。

**`Builder` モードでのクエリ作成方法**

1. 前の表の情報を参考に、メトリクスの名前空間、メトリクス名、フィルター、グループ、順序オプションを参照して選択します。

1. これらの各オプションについて、利用可能な選択肢のリストから選択します。

**`Code` モードでのクエリ作成方法**

1. コードエディタにクエリを記述します。

1. クエリを実行するには、コードエディタで [**クエリを実行する**] を選択します。

`builder` モードでのクエリ作成方法:
+ 前の表の情報を参考に、メトリクスの名前空間、メトリクス名、フィルター、グループ、順序オプションを参照して選択します。
+ これらの各オプションについて、利用可能な選択肢のリストから選択します。

Grafana によって、選択した内容を基に SQL クエリが自動的に構築されます。

 `code` モードでのクエリ作成方法:
+ コードエディタにクエリを記述します。
+ クエリを実行するには、コードエディタで **[クエリを実行する]** を選択します。

コードエディタには、キーワード、集計、名前空間、メトリクス、ラベル、ラベル値に対して候補を提示する自動補完機能が組み込まれています。スペース、カンマ、またはドル記号を入力すると、候補が表示されます。キーボードの組み合わせ (`CTRL+Space`) を使用することもできます。

コードエディタはクエリを自動補完します。ただし、コードエディタでテンプレート変数を使用した場合、自動補完が妨げられる可能性があります。

## CloudWatch Metrics Insights の例
<a name="goldeneye-examples"></a>

**注記**  
CloudWatch Metrics Insights はオープンプレビュー中です。プレビューはすべての AWS アカウントで開かれており、アクセスをリクエストする必要はありません。一般提供を発表する前に、機能が追加または変更されることがあります。

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

### EC2 の例
<a name="goldeneye-EC2-examples"></a>

 インスタンスあたりの CPU 使用率のメトリクスを表示

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

フリート全体での平均 CPU 使用率を表示

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

 平均 CPU 使用率が最も高い 10 個のインスタンスを表示 

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

CPU 使用率が最も高い 10 個のインスタンスを降順で表示

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

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

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

Lambda 関数の平均実行時間上位 10 個を降順で表示

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

Lambda 関数の実行時間の最大値、平均値、最小値を表示

```
SELECT MAX(Duration)
FROM "AWS/Lambda"
```

### Application Load Balancer での例
<a name="application-loadbalancer-examples"></a>

 ディメンション **LoadBalancer** と **AvailabilityZone** を持つメトリクスを表示

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

アクティブな同時 TCP 接続の数を含むメトリクスを表示

```
SELECT AVG(ActiveConnectionCount)
FROM "AWS/ApplicationELB"
```

### Amazon EBS の例
<a name="Amazon-elastic-block-store-examples"></a>

 ボリュームあたりの平均書き込みバイト数の上位 10 個を降順で表示

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
GROUP BY VolumeId
ORDER BY MAX() DESC
LIMIT 10
```

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

```
SELECT AVG(VolumeTotalWriteTime)
FROM "AWS/EBS"
```

Amazon EBS ボリュームでの平均アイドル時間を表示

```
SELECT AVG(VolumeIdleTime)
FROM "AWS/EBS"
View average burst balance per volume
SELECT AVG(BurstBalance)
FROM "AWS/EBS"
GROUP BY VolumeId
View average read bytes across Amazon EBS volumes
SELECT AVG(VolumeReadBytes)
FROM "AWS/EBS"
```

Amazon EBS ボリュームでの平均書き込みバイト数を表示

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
```

### Amazon Simple Storage Service での例
<a name="simple-storage-service-examples"></a>

 平均レイテンシーグループ (バケット名別) を表示

```
SELECT AVG(TotalRequestLatency)
FROM "AWS/S3"
GROUP BY BucketName
```

すべての Amazon S3 バケットのバケットあたりのオブジェクトの平均数を表示

```
SELECT AVG(NumberOfObjects)
FROM "AWS/S3"
GROUP BY BucketName
```

### Amazon Simple Notification Service での例
<a name="Amazon-simple-notificaation-service-examples"></a>

Amazon-Simple-Notification-Service-での例 

```
SELECT AVG(NumberOfMessagesPublished)
FROM "AWS/SNS"
```

失敗したメッセージの平均数 (トピック名別) を表示

```
SELECT AVG(NumberOfNotificationsFailed)
FROM "AWS/SNS"
GROUP BY TopicName
```

### AWS API の使用例
<a name="AWS-API-usage-examples"></a>

アカウントの呼び出し数で上位 20 AWS APIs を表示する 

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

## CloudWatch Metrics Insights の制限
<a name="metrics-insights-limits"></a>

CloudWatch Metrics Insights には現在、次の制限があります。
+ 直近 3 時間分のデータにのみクエリを実行できます。
+ 1 つのクエリで処理できるメトリクスは 10,000 個以下です。つまり、`SELECT` 句、`FROM` 句、および `WHERE` 句が 10,000 を超えるメトリクスと一致した場合、見つかったこれらのメトリクスのうち最初の 10,000 のみがクエリによって処理されます。
+ 1 つのクエリで 500 を超える時系列を返すことはできません。これは、クエリが 500 個を超えるメトリクスを処理している場合でも、クエリ結果にすべてのメトリクスが返されるわけではないことを意味します。`ORDER BY` 句を使用すると、処理されているすべてのメトリクスがソートされます。その中から (`ORDER BY` 句に応じ) 最大値または最小値を持つ 500 個が返されます。`ORDER BY` 句を含めない場合は、一致したメトリクスの中から、どの 500 個が選択され返されるのかを制御することはできません。
+ 個別の `GetMetricData` オペレーションに含めることができるクエリは 1 つだけですが、ダッシュボードには、それぞれにクエリを 1 つ含んだ複数のウィジェットを用意することができます。