

# コンソールの Amazon ECS イベントキャプチャ
<a name="task-lifecycle-events"></a>

Amazon ECS コンソールには、サービスアクションやタスク状態の変更など、Amazon ECS が生成したイベントを EventBridge 経由で Amazon CloudWatch Logs に保存するイベントキャプチャ機能が用意されています。この機能には、モニタリングとトラブルシューティングのためのフィルタリング機能を備えたクエリインターフェイスが含まれています。

イベントは、サービスのデプロイ、サービス、タスク、インスタンスの動作に関する詳細情報を提供します。この情報を使用して、タスクまたはサービスのデプロイの失敗をトラブルシューティングできます。

イベントキャプチャを有効にすると、選択した保持期間中に Amazon ECS が生成するすべてのイベントにアクセスできるようになります。これにより、フィルタリングされていない 100 件を超える過去のイベントにアクセスでき、また、停止したタスクは 1 時間以上表示可能になります。

## 仕組み
<a name="task-lifecycle-events-overview"></a>

イベントキャプチャは EventBridge を使用して、事前定義された Amazon CloudWatch Logs ロググループにイベントを保存します。Amazon ECS コンソールは、事前に構築されたクエリとフィルタリングオプションを提供し、イベントを関連付けて直感的な形式でタスクライフサイクルを提供します。

次のタイプのイベントをクエリして取得できます。
+ **サービスアクションイベント** – プロビジョニングまたはリソース割り当ての問題を特定するのに役立ちます
+ **タスクライフサイクルイベント** – タスクまたはコンテナが起動または実行停止に失敗する理由を特定するのに役立ちます

Amazon ECS コンソールを使用すると、ワンクリックでイベントキャプチャを設定し、一般的に使用されるクエリやフィルタリングを利用できます。クエリ言語の習得は不要で、複数のコンソール間を移動する必要もありません。

## イベントタイプ
<a name="task-lifecycle-events-types"></a>

イベントキャプチャは、Amazon ECS で生成されたすべてのイベントを次のカテゴリに保存します。

タスク状態変更イベント  
コンテナの停止およびその他の終了イベント。トラブルシューティングやタスクのライフサイクルタイムラインのモニタリングに使用できます。

サービスアクション  
定常状態に達する、タスク配置の失敗、リソースの制約などのイベント。

サービスデプロイの状態の変更  
サービスデプロイの状態をモニタリングするために、サーキットブレーカーとロールバック設定によってトリガーされるイベント (進行中のデプロイ、完了したデプロイ、失敗したデプロイなど)。

コンテナインスタンス状態の変更  
EC2 および Amazon ECS マネージドインスタンスのワークロードの場合、イベントには接続と切断の状態が表示されます。

## ロググループ設定
<a name="task-lifecycle-events-log-group"></a>

イベントキャプチャを有効にすると、Amazon ECS は次のリソースを自動的に作成します。
+ `/aws/events/ecs/containerinsights/${clusterName}/performance` という名前の Amazon CloudWatch Logs ロググループ
+ `aws.ecs` ソースからすべてのイベントを取り込みロググループに転送する EventBridge ルール

ロググループの保持期間は 1 日から 10 年の間で指定できます。デフォルトの保持期間は 7 日間です。

## 考慮事項
<a name="task-lifecycle-events-limitations"></a>

イベントキャプチャを使用する場合は、以下の点を考慮してください。
+ イベントキャプチャは、簡素化の目的ですべてのイベントを保存します。Amazon ECS コンソールで、特定のイベントのみをキャプチャするルールを設定することはできません。
+ Amazon ECS コンソールには、事前定義済みのクエリ条件が用意されています。高度なクエリの場合は、Amazon CloudWatch Logs Insights を使用してロググループに直接クエリを実行します。
+ ライブテール機能は Amazon ECS コンソールでは使用できません。ライブテールには Amazon CloudWatch Logs を直接使用します。
+ イベントキャプチャを無効にすると、EventBridge ルールは削除されます。
+ イベントキャプチャでは、EventBridge のデータ取り込み、Amazon CloudWatch Logs ストレージ、クエリの実行に追加のコストが発生します。

  EventBridge の料金の詳細については、「[EventBridge の料金](https://aws.amazon.com/eventbridge/pricing/)」を参照してください。

  CloudWatch の料金の詳細については、「[CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」をご覧ください。

## イベントベースのトラブルシューティング
<a name="task-lifecycle-events-troubleshooting"></a>

Amazon ECS で生成されたイベントを活用して、一般的なトラブルシューティングの疑問に対応します。

### タスク障害分析
<a name="task-lifecycle-events-task-failures"></a>

`STOPPED` タスクの状態変更イベント、停止コード、コンテナ終了コードを確認して、タスクが起動に失敗した理由や、実行中に失敗した理由を特定できます。

配置の失敗およびリソース制約情報に関するサービスアクションイベントを確認して、リソースの制約が原因でタスクが配置に失敗した理由を特定できます。

### 一般的なタスク障害シナリオ
<a name="task-lifecycle-events-common-issues"></a>

最も一般的に発生する異常なタスク障害は、次の問題に関連しています。
+ CI/CD サービスのデプロイの失敗
+ 自動スケーリングの失敗
+ タスクの再調整の失敗
+ out–of–memory (OOM) エラーなど、異常なコンテナの終了

異常なタスク障害は、`EssentialContainerExited` または `TaskFailedToStart` の停止コードを含む `STOPPED` タスク状態変更イベントを生成します。これらの停止コードでフィルタリングして、コンテナの実行と停止の動作を調べることができます。

# 既存の Amazon ECS クラスターのイベントキャプチャを有効にする
<a name="turn-on-event-capture-existing-cluster"></a>

既存の Amazon ECS クラスターのイベントキャプチャを有効にして、EventBridge を通じて Amazon ECS で生成されたイベントを Amazon CloudWatch Logs に保存できます。この機能は、タスクの障害、サービスのデプロイ、その他のクラスターアクティビティのモニタリングおよびトラブルシューティングに役立ちます。

イベントキャプチャを有効にすると、Amazon ECS は次のリソースを作成します。
+ `/aws/events/ecs/containerinsights/${clusterName}/performance` という名前の Amazon CloudWatch Logs ロググループ
+ `aws.ecs` ソースからすべてのイベントをキャプチャする EventBridge ルール

クラスタービューに **[履歴]** タブが表示され、タスクライフサイクルイベントとサービスアクションにクエリを実行できます。イベントキャプチャは直ちに開始され、指定した保持期間に従って Amazon ECS が生成したすべてのイベントを保存します。

## 前提条件
<a name="turn-on-event-capture-prerequisites"></a>
+ 既存の Amazon EKS クラスター
+ クラスター設定を変更し、Amazon CloudWatch Logs リソースを作成するための適切な IAM アクセス権限

## コンソールを使用してイベントキャプチャを有効にする
<a name="turn-on-event-capture-procedure"></a>

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

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

1. イベントキャプチャを有効にするクラスターを選択します。

   クラスター詳細のページが表示されます。

1. **[設定]** を選択します。

1. **[ECS イベント]** セクションで、**[イベントキャプチャをオンにする]** を選択します。

   **[イベントキャプチャをオンにする]** のダイアログボックスが表示されます。

1. **[イベントを失効]** で、Amazon CloudWatch Logs ロググループの保持期間を選択します。デフォルトは 7 日間です。

1. **[オンにする]** を選択します。

# Amazon ECS サービスおよびタスクの状態変更イベントを表示する
<a name="viewing-state-events"></a>

Amazon ECS コンソールには、サービスアクションやタスク状態の変更など、Amazon ECS が生成したイベントを EventBridge 経由で Amazon CloudWatch Logs に保存するイベントキャプチャ機能が用意されています。この機能には、モニタリングとトラブルシューティングを拡張するフィルタリング機能を備えたクエリインターフェイスが含まれています。

イベントは、サービスのデプロイ、サービス、タスク、インスタンスの動作に関する詳細情報を提供します。この情報を使用して、タスクまたはサービスのデプロイの失敗をトラブルシューティングできます。

次のいずれかの基準を使用して、イベントをフィルタリングできます。
+  デプロイ ID (これは [サービス詳細] ページでのみ使用できます) 
+ 開始時間
+ 終了時間 
+ サービス名 ([クラスターの詳細] ページ、[サービス詳細] ページでのみ使用できます。デフォルトで現在のサービスになります) 
+ タスク ID 
+ タスクの最終状態 
+ タスク定義ファミリー 
+ タスク定義リビジョン 

## クラスターレベルでのイベントを表示する
<a name="view-cluster-procedure"></a>

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

1. **[クラスター]** を選択します。

   クラスターリストページが表示されます。

1.  クラスターを選択します。

   クラスター詳細のページが表示されます。

1. **[履歴]** で、表示するイベントを決定します。

   1. サービスアクションイベントを表示するには、**[サービスアクションイベント]** を選択します。

   1. タスク状態の変更イベントを表示するには、**[タスク状態の変更イベント]** を選択します。

   1. (オプション) **[クエリ基準]** に、表示するイベントのフィルターを入力します。

1. **[Run query]** (クエリの実行) を選択します。

   イベントがリストに表示されます。

1. イベントの詳細をすべて表示するには、イベントを選択します。

## サービスレベルで表示する
<a name="tasks-procedure"></a>

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

1. **[Clusters]** (クラスター) ページで、クラスターを選択します。

1. [クラスターの詳細] ページの **[サービス]** セクションで、サービスを選択します。

   [サービスの詳細] ページが表示されます。

1. **[履歴]** で、表示するイベントを決定します。

   1. サービスアクションイベントを表示するには、**[サービスアクションイベント]** を選択します。

   1. タスク状態の変更イベントを表示するには、**[タスク状態の変更イベント]** を選択します。

   1. (オプション) **[クエリ基準]** に、表示するイベントのフィルターを入力します。

1. **[Run query]** (クエリの実行) を選択します。

   イベントがリストに表示されます。

1. イベントの詳細をすべて表示するには、イベントを選択します。