ECS タスクとコンテナのデプロイをモニタリングするように CloudWatch Container Insights を設定するにはどうすればよいですか?

最終更新日: 2022 年 4 月 8 日

Amazon Elastic Container Service (Amazon ECS) のタスクとコンテナのデプロイをモニタリングするように Amazon CloudWatch Container Insights を設定したいと考えています。どうすればよいですか?

簡単な説明

Container Insights は、クラスター、タスク、およびサービスレベルでメトリクスを収集します。これらのメトリクスには CPU、メモリ、ディスク、ネットワークなどのリソースの使用状況が含まれ、CloudWatch 自動ダッシュボードで利用できます。

Amazon ECS を設定して、Container Insightsに対してすべての新しいクラスターをデフォルトで有効にすることができます。また、クラスターの作成時にクラスター設定を使用して、個々のクラスターで Container Insights を有効にすることもできます。AWS Command Line Interface (AWS CLI) を使用して、既存のクラスターで Container Insights を有効にすることもできます。

解決方法

注意: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

アカウント設定の更新

Container Insights アカウント設定へのオプトインによって作成されるすべての新しいクラスターに対して Container Insights を有効にします。

CloudWatch コンソールを使用してアカウント設定を変更する

  1. Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで、アカウント設定を変更するリージョンを選択します。
  3. [アカウント設定] を選択します。
  4. [CloudWatch Container Insights] セクションでは、認証された AWS Identity and Access Management (IAM) ユーザーとロールの各アカウント設定のチェックボックスをオンまたはオフにできます。終了したら、[保存] を選択します。
  5. 確認画面で、[確認] を選択して選択内容を保存します。

AWS アカウントのルートユーザーとしてログインすると、アカウントのデフォルト設定を変更できます。または、アカウント内の特定の IAM ユーザーまたは IAM ロールの設定を変更することもできます。

アカウントのすべての IAM ユーザーまたはロールのデフォルトアカウント設定を変更する (AWS CLI)

このコマンドを使用して、アカウントのすべての IAM ユーザーまたはロールのデフォルトアカウント設定を変更します。その結果として生じる変更は、IAM ユーザーまたはロールがこれらの設定を明示的に上書きしない限り、AWS アカウント全体に適用されます。

aws ecs put-account-setting-default --name containerInsights --value enabled --region <REGION_NAME>

詳細については、「アカウント設定の変更」を参照してください。

Container Insights を有効にしてクラスターを作成する

Amazon ECS コンソールまたは AWS CLI のいずれかを使用して、クラスターの作成中に Container Insights を有効にできます。

コンソールを使用して Container Insights を有効にしてクラスターを作成する

注: このステップは、新しい Amazon ECS コンソール (v2) を使用して完了してください。クラシックコンソールを使用する場合は、「クラシックコンソールを使用したクラスターの作成」を参照してください。

  1. 新しい Amazon ECS コンソールを開きます。
  2. ナビゲーションペインで、クラスターを作成するリージョンを選択します。
  3. [クラスター] をクリックしてから、[クラスターを作成] を選択します。
  4. クラスター構成セクションで、クラスターの作成に必要な設定を選択します。
  5. [監視] を展開し、[Container Insights の使用] をオンにします。
  6. [作成] を選択します。

AWS CLI を使用してコンテナインサイトを有効にしてクラスターを作成する

Container Insights を有効にして新しいクラスターを作成するには、次のコマンドを実行します。

aws ecs create-cluster --cluster-name <CLUSTER_NAME> --settings "name=containerInsights,value=enabled" --region <REGION_NAME>

既存の Amazon ECS クラスターでコンテナインサイトを有効にする

既存のクラスターで Container Insights を有効にするには、次のコマンドを実行します。

aws ecs update-cluster-settings --cluster <CLUSTER_NAME> --settings name=containerInsights,value=enabled --region <REGION_NAME>

Container Insights に関する考慮事項

CloudWatch Container Insights を使用する際には、次の点に注意してください。

  • Amazon Elastic Compute Cloud (Amazon EC2) 起動タイプを使用する場合、タスクにコンテナの CPU リソース設定は必要ありません。ECS タスクレベルで CPU 使用率メトリクスを表示するには、タスク定義でタスクレベルまたはコンテナレベルで CPU パラメータを定義します。
  • ネットワークメトリクスは AWS Fargate で実行されるすべてのタスクで利用できます。ネットワークメトリクスは、bridge または awsvpc ネットワークモードを使用して Amazon EC2 インスタンスで実行されるタスクにも使用できます。
  • EC2 インスタンスでホストされている ECS クラスターからインスタンスレベルのメトリクスを収集するには、CloudWatch エージェントをデプロイします。

CloudWatch Logs インサイトを使用してコンテナインサイトデータを表示する

Amazon ECS の Containers Insights によって収集されるメトリクスは、1 つのタスクを追跡できるほど詳細ではありません。これは、利用可能なすべてのメトリクスがタスク定義ファミリレベルで集計され、平均化されるためです。収集されたパフォーマンスデータをより詳細に分析するには、CloudWatch Logs Insights クエリを使用します。

Container Insights のパフォーマンスメトリクスは、パフォーマンスログイベントを使用してログの形式で自動的に収集されます。CloudWatch Logs インサイトコンソールを開き、次の形式のロググループを選択します。

/aws/ecs/containerinsights/<CLUSTER_NAME>/performance

たとえば、次のクエリは CPU とメモリのタスクレベルの使用量を表示します。

stats avg(CpuUtilized) as CPU, avg(MemoryUtilized) as Mem by TaskId
| filter Type="Task"
| sort Mem, CPU desc