

# Amazon CloudWatch のメトリクスを使用して REST API の実行をモニタリングする
<a name="monitoring-cloudwatch"></a>

CloudWatch を使用して API の実行をモニタリングすることで、API Gateway から raw データを収集し、リアルタイムに近い読み取り可能なメトリクスに加工することができます。これらの統計は 15 か月間記録されるため、履歴情報にアクセスしてウェブアプリケーションやサービスの動作をより的確に把握できます。デフォルトでは、API Gateway のメトリクスデータは 1 分間隔で自動的に CloudWatch に送信されます。詳細については、*Amazon CloudWatch ユーザーガイド*の「[Amazon CloudWatch とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)」を参照してください。

API Gateway からレポートされるメトリクスには、さまざまな方法で分析できる情報が含まれています。以下に、メトリクスの一般的な使用方法を示します。これらの使用方法を参考にしてください。
+ バックエンドの応答性を測定するため、[**IntegrationLatency**] メトリクスをモニタリングします。
+ API コールの全体的な応答性を測定するために、**Latency** メトリクスをモニタリングします。
+ 目的のパフォーマンスの実現に向けてキャッシュ容量を最適化するために、**CacheHitCount** と **CacheMissCount** メトリクスをモニタリングします。

**Topics**
+ [Amazon API Gateway のディメンションとメトリクス](api-gateway-metrics-and-dimensions.md)
+ [API Gateway の API ダッシュボードで CloudWatch のメトリクスを表示する](how-to-api-dashboard.md)
+ [CloudWatch コンソールで API Gateway のメトリクスを表示する](metrics_dimensions_view_in_cloud_watch.md)
+ [CloudWatch コンソールで API Gateway のログイベントを表示する](view-cloudwatch-log-events-in-cloudwatch-console.md)
+ [AWS の API Gateway 用モニタリングツール](monitoring_automated_manual.md)

# Amazon API Gateway のディメンションとメトリクス
<a name="api-gateway-metrics-and-dimensions"></a>

API Gateway が Amazon CloudWatch に送信するメトリクスとディメンションを以下に示します。詳細については、「[Amazon CloudWatch のメトリクスを使用して REST API の実行をモニタリングする](monitoring-cloudwatch.md)」を参照してください。

## API Gateway のメトリクス
<a name="api-gateway-metrics"></a>

Amazon API Gateway は、メトリクスデータを 1 分ごとに CloudWatch に送信します。

`AWS/ApiGateway` 名前空間には、次のメトリクスが含まれます。


| メトリクス | 説明 | 
| --- | --- | 
|  4XXError |  指定された期間に取得されたクライアント側エラーの数。 API Gateway は、変更されたゲートウェイのレスポンスステータスコードを 4xxError エラーとしてカウントします。 `Sum` 統計は、このメトリクス、つまり、指定された期間内の 4XXError エラーの合計数を表します。`Average` 統計は、4XXError のエラー率 (4XXError エラーの合計数をその期間のリクエストの合計数で割った値) を表します。分母は Count メトリクス (下記) に対応します。 Unit: Count  | 
|  5XXError  |  指定された期間に取得されたサーバー側エラーの数。 `Sum` 統計は、このメトリクス、つまり、指定された期間内の 5XXError エラーの合計数を表します。`Average` 統計は、5XXError のエラー率 (5XXError エラーの合計数をその期間のリクエストの合計数で割った値) を表します。分母は Count メトリクス (下記) に対応します。 Unit: Count  | 
|  CacheHitCount  |  指定された期間内に API キャッシュから配信されたリクエストの数。 `Sum` 統計は、このメトリクス、つまり、指定された期間内のキャッシュヒットの合計数を表します。`Average` 統計は、キャッシュヒット率、つまり、キャッシュヒットの合計数をその期間のリクエストの合計数で割ったものです。分母は Count メトリクス (下記) に対応します。 Unit: Count  | 
|  CacheMissCount  |  API キャッシュが有効になっている特定の期間における、バックエンドから提供されたリクエストの数。 `Sum` 統計は、このメトリクス、つまり、指定された期間内のキャッシュミスの合計数を表します。`Average` 統計は、キャッシュミス率、つまり、キャッシュミスの合計数をその期間のリクエストの合計数で割ったものです。分母は Count メトリクス (下記) に対応します。 Unit: Count  | 
|  Count  |  指定期間内の API リクエストの合計数。 `SampleCount` 統計は、このメトリクスを表します。 Unit: Count  | 
|  IntegrationLatency  |  API Gateway がバックエンドにリクエストを中継してから、バックエンドからレスポンスを受け取るまでの時間。 Unit: Millisecond  | 
|  Latency  |  API Gateway がクライアントからリクエストを受け取ってから、クライアントにレスポンスを返すまでの時間。レイテンシーには、統合のレイテンシーおよびその他の API Gateway のオーバーヘッドが含まれます。 Unit: Millisecond  | 

## メトリクスのディメンション
<a name="api-gateway-metricdimensions"></a>

API Gateway のメトリクスをフィルタリングするには、次の表のディメンションを使用できます。

**注記**  
API Gateway は、メトリクスを CloudWatch に送信する前に、ApiName ディメンションから ASCII 以外の文字を削除します。APIName に ASCII 文字が含まれていない場合、API ID は ApiName として使用されます。


| ディメンション | 説明 | 
| --- | --- | 
|  ApiName  |  指定した API 名を使用して、API Gateway の REST API のメトリクスをフィルタリングします。  | 
|  ApiName, Method, Resource, Stage  |  指定した API 名、ステージ、リソース、メソッドを使用して、API Gateway の API のメソッドのメトリクスをフィルタリングします。 詳細な CloudWatch のメトリクスを明示的に有効にしない限り、API Gateway はこれらのメトリクスを送信しません。コンソールでステージを選択し、**[ログとトレース]** で **[編集]** を選択します。**[詳細なメトリクス]**、**[変更を保存]** の順に選択します。[update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) AWS CLI コマンドを呼び出して `metricsEnabled` プロパティを `true` に更新することもできます。 これらのメトリクスを有効にすることで、アカウントに追加料金が発生します。詳細については、[Amazon CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)をご覧ください。  | 
|  ApiName, Stage  |  指定した API 名とステージを使用して、API Gateway の API のステージリソースのメトリクスをフィルタリングします。  | 

# API Gateway の API ダッシュボードで CloudWatch のメトリクスを表示する
<a name="how-to-api-dashboard"></a>

API Gateway コンソールの API ダッシュボードを使用して、API Gateway にデプロイされた API に関する CloudWatch のメトリクスを表示できます。これは、時間の経過に伴う API アクティビティの概要として表示されます。

**Topics**
+ [前提条件](#how-to-api-dashboard-prerequisites)
+ [ダッシュボードでの API アクティビティの調査](#how-to-api-dashboard-console)

## 前提条件
<a name="how-to-api-dashboard-prerequisites"></a>

1. API Gateway で API が作成済みであることが必要です。「」の手順に従います[API Gateway で REST API を開発する](rest-api-develop.md)

1. API は少なくとも一度はデプロイする必要があります。「[API Gateway で REST API をデプロイする](how-to-deploy-api.md)」の手順に従います

## ダッシュボードでの API アクティビティの調査
<a name="how-to-api-dashboard-console"></a>

1. [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway) で API Gateway コンソールにサインインします。

1. APIを選択します。

1. ナビゲーションペインで、**[ダッシュボード]** を選択します。

1. **[ステージ]** では、目的のステージを選択します。

1. **[日付範囲]** を選択して日付の範囲を指定します。

1. **[API コール]**、**[レイテンシー]**、**[統合のレイテンシー]**、****[レイテンシー]、**[4xx エラー]**、および **[5xx エラー]** というタイトルの個別のグラフに表示される各メトリクスを、必要に応じて更新して確認します。
**ヒント**  
メソッドレベルで CloudWatch のメトリクスを確認するには、メソッドレベルで CloudWatch Logs を有効にしている必要があります。メソッドレベルでログを設定する方法については、「」を参照してください[ステージレベルの設定のオーバーライド](set-up-stages.md#how-to-method-override)

# CloudWatch コンソールで API Gateway のメトリクスを表示する
<a name="metrics_dimensions_view_in_cloud_watch"></a>

メトリクスはまずサービスの名前空間ごとにグループ化され、次に各名前空間内のさまざまなディメンションの組み合わせごとにグループ化されます。API のメソッドレベルでメトリクスを表示するには、[詳細なメトリクス] をオンにします。詳細については、「[ステージ設定の変更](set-up-stages.md#how-to-stage-settings)」を参照してください。

**CloudWatch コンソールを使用して API Gateway のメトリクスを表示するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. 必要に応じて AWS リージョン を変更します。ナビゲーションバーから、AWS リソースがあるリージョンを選択します。

1. ナビゲーションペインで [**Metrics (メトリクス)**] を選択してください。

1. [**すべてのメトリクス**] タブで、[**API Gateway**] を選択します。

1.  ステージ別にメトリクスを表示するには、[**ステージ別**] パネルを選択します。次に、API とメトリクス名を選択します。

1. API 別にメトリクスを表示するには、[**API 名別**] パネルを選択します。次に、API とメトリクス名を選択します。

**AWS CLI を使ってメトリクスを表示するには**

1. 次の [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) コマンドを使用して、メトリクスを一覧表示します。

   ```
   aws cloudwatch list-metrics --namespace "AWS/ApiGateway"
   ```

   メトリクスを作成した後、メトリクスが表示されるまでに最大 15 分かかります。メトリクスの統計をより早く確認するには、[get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html) または [get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/update-domain-name.html) を使用します。

1. 次の [get-metrics-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html) コマンドを使用して、5 分間隔での一定期間の平均を表示します。

   ```
   aws cloudwatch get-metric-statistics --namespace AWS/ApiGateway --metric-name Count --start-time 2011-10-03T23:00:00Z --end-time 2017-10-05T23:00:00Z --period 300 --statistics Average
   ```

# CloudWatch コンソールで API Gateway のログイベントを表示する
<a name="view-cloudwatch-log-events-in-cloudwatch-console"></a>

次のセクションでは、必要な前提条件を示し、CloudWatch コンソールで API Gateway のログイベントを表示する方法について説明します。

## 前提条件
<a name="view-cloudwatch-log-event-prerequisites"></a>

1. API Gateway で API が作成済みであることが必要です。「[API Gateway で REST API を開発する](rest-api-develop.md)」の手順に従います。

1. API は、少なくとも 1 回、デプロイして呼び出す必要があります。「[API Gateway で REST API をデプロイする](how-to-deploy-api.md)」および「[API Gateway で REST API を呼び出す](how-to-call-api.md)」の手順に従います。

1. ステージで CloudWatch Logs を有効にする必要があります。「[API Gateway で REST API の CloudWatch ログ記録を設定する](set-up-logging.md)」の手順に従います。

## ログに記録された API リクエストや API レスポンスを CloudWatch コンソールで表示するには
<a name="view-cloudwatch-log-event"></a>

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. 必要に応じて AWS リージョン を変更します。ナビゲーションバーから、AWS リソースがあるリージョンを選択します。詳細については、「[リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html)」を参照してください。

1. ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1. [**ロググループ**] 一覧で、"**API-Gateway-Execution-Logs\$1\$1rest-api-id\$1/\$1stage-name\$1**" という名前のロググループを選択します。

1.  [**ログストリーム**] 一覧で、ログストリームを選択します。タイムスタンプを使用して、目的のログストリームを見つけることができます。

1. 未加工のテキストを表示するには、[**テキスト**] を選択します。または、行ごとにイベントを表示するには、[**行**] を選択します。

**重要**  
 CloudWatch ではロググループやログストリームを削除することができますが、API Gateway の API のロググループやログストリームは手動で削除せず、API Gateway にそれらのリソースを管理させるようにしてください。ロググループまたはストリームを手動で削除すると、API のリクエストとレスポンスがログに記録されなくなる場合があります。その場合は、API のロググループ全体を削除して API を再デプロイしてくさい。これは、API Gateway によって API のデプロイ時に API ステージのロググループまたはログストリームが作成されるためです。

# AWS の API Gateway 用モニタリングツール
<a name="monitoring_automated_manual"></a>

AWS では、API Gateway のモニタリングに使用できるさまざまなツールを提供しています。これらのツールの中には、自動モニタリングを設定できるものもあれば、手操作を必要とするものもあります。モニタリングタスクをできるだけ自動化することをお勧めします。

## AWS の自動モニタリングツール
<a name="monitoring_automated_tools"></a>

以下の自動モニタリングツールを使用して、API Gateway を監視し、問題が発生したときにレポートすることができます。
+ **Amazon CloudWatch のアラーム** – 単一のメトリクスを指定した期間モニタリングし、特定のしきい値に対する複数の期間にわたるメトリクスの値に基づいて、1 つ以上のアクションを実行します。アクションは、Amazon Simple Notification Service (Amazon SNS) のトピックまたは Amazon EC2 Auto Scaling のポリシーに送信される通知です。CloudWatch アラームは、特定の状態にあるという理由だけでアクションを呼び出すことはありません。状態が変更され、指定された期間維持されている必要があります。詳細については、「[Amazon CloudWatch のメトリクスを使用して REST API の実行をモニタリングする](monitoring-cloudwatch.md)」を参照してください。
+ **Amazon CloudWatch Logs** - AWS CloudTrail またはその他の出典からログファイルをモニタリング、保存、およびアクセスします。詳細については、「Amazon CloudWatch ユーザーガイド」の「[Amazon CloudWatch Logs とは](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)」を参照してください。**
+ **Amazon EventBridge (旧 CloudWatch Events)** - イベントに一致したものを 1 つ以上のターゲットの関数やストリームにルーティングして、変更、状態の情報の収集、是正措置を行います。詳細については、「EventBridge ユーザーガイド」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。**
+ **AWS CloudTrail ログモニタリング** - アカウント間でログファイルを共有し、CloudTrail のログファイルを CloudWatch Logs に送信することでそれらをリアルタイムでモニタリングし、ログを処理するアプリケーションを Java で作成し、CloudTrail からの提供後にログファイルが変更されていないことを検証します。詳細については、「*AWS CloudTrail ユーザーガイド*」の「[CloudTrail ログファイルの使用](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)」を参照してください。

## 手動モニタリングツール
<a name="monitoring_manual_tools"></a>

API Gateway のモニタリングでもう 1 つ重要な点は、CloudWatch のアラームの対象外の項目を手動でモニタリングすることです。API Gateway、CloudWatch、その他の AWS のコンソールのダッシュボードは、AWS 環境の状態を一目で把握できるビューを提供します。API 実行のログファイルを確認することもお勧めします。
+ API Gateway のダッシュボードには、指定した期間の API の特定のステージに関する以下の統計情報が表示されます。
  + **API 呼び出し**
  + **キャッシュヒット**、API キャッシュが有効になっている場合のみ。
  + **キャッシュミス**、API キャッシュが有効になっている場合のみ。
  + **レイテンシー**
  + **統合のレイテンシー**
  + **4XX エラー**
  + **5XX エラー**
+ CloudWatch のホームページには、以下の情報が表示されます。
  + 現在のアラームとステータス
  + アラームとリソースのグラフ
  + サービスのヘルスステータス

  また、CloudWatch を使用して以下のことを行えます。
  + 重視するサービスをモニタリングするための[カスタマイズしたダッシュボード](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)を作成します
  + メトリクスデータをグラフ化して、問題のトラブルシューティングを行い、傾向を確認する
  + AWS リソースのすべてのメトリクスを検索して、参照する
  + 問題があることを通知するアラームを作成/編集する

## API Gateway をモニタリングする CloudWatch のアラームの作成
<a name="creating_alarms"></a>

アラームの状態が変わったら、Amazon SNS メッセージを送信する Amazon CloudWatch のアラームを作成することができます。アラームは、指定期間にわたって単一のメトリクスを監視し、指定したしきい値に対応したメトリクスの値に基づいて、期間数にわたって 1 つ以上のアクションを実行します。アクションは、Amazon SNS のトピックまたはオートスケーリングのポリシーに送信される通知です。アラームは、持続している状態変化に対してのみアクションを呼び出します。CloudWatch のアラームは、メトリクスが特定の状態にあるだけではアクションを呼び出しません。アクションを呼び出すには、指定した期間継続している必要があります。