ECS モニタリング
概要
CloudWatch Container Insights を使用したシステムメトリクスと、ADOT(AWS Distro for OpenTelemetry)を使用したアプリケーションレベルのメトリクスおよび分散トレースで Amazon ECS ワークロードをモニタリングします。このソリューションは、ECS on EC2 と ECS on Fargate の両方をサポートしています。
Container Insights は、サイドカー不要で、クラスター、サービス、およびタスクレベルのメトリクス(CPU、メモリ、ネットワーク、ディスク)を自動ダッシュボード付きで提供します。より深いオブザーバビリティを実現するには、ADOT Collector をサイドカーとしてデプロイして、タスクレベルのリソースメトリクス、Prometheus アプリケーションメトリクス、および X-Ray トレースを収集し、Amazon Managed Service for Prometheus(AMP)および Amazon Managed Grafana(AMG)にルーティングします。
このエントリでは、高速パス(Container Insights、5 分)とアドバンスドパス(ADOT → AMP/AMG/X-Ray)の 2 つのパスを説明します。完全なリファレンス:ECS 用 Container Insights。
前提条件
- Amazon ECS クラスター(EC2 または Fargate 起動タイプ)
- 適切な権限で設定された AWS CLI v2
CloudWatchAgentServerPolicyを持つ IAM タスク実行ロール(Container Insights 用)- (ADOT パスの場合)
AWSXRayDaemonWriteAccessおよびAmazonPrometheusRemoteWriteAccessを持つ IAM タスクロール - (ADOT パスの場合)AMP ワークスペースおよび AMG ワークスペース
- ECS エージェント v1.39.0 以降(EC2)または Fargate プラットフォーム v1.4.0 以降
アーキテクチャ
┌──────────────────────────────────────────────────────────────┐
│ ECS Cluster │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ ECS Task │ │
│ │ ┌──────────────┐ ┌───────────────────┐ │ │
│ │ │ Application │ │ ADOT Collector │ │ │
│ │ │ Container │──│ (sidecar) │ │ │
│ │ │ (X-Ray SDK / │ │ │ │ │
│ │ │ Prometheus) │ └─────┬─────┬───────┘ │ │
│ │ └──────────────┘ │ │ │ │
│ └──────────────────────────┼─────┼───────────┘ │
│ │ │ │
│ ECS Agent ─── Container Insights metrics ──┐ │
│ │ │ │ │
└─────────────────────────────┼─────┼─────────┼────────────────┘
│ │ │
┌───── ───────┘ │ └──────────┐
▼ ▼ ▼
┌────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AWS X-Ray │ │ Amazon Managed │ │ CloudWatch │
│ Traces & │ │ Prometheus │ │ Metrics & Logs │
│ Service Map │ │ (AMP) │ │ Dashboards │
└────────────────┘ └────────┬────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ Amazon Managed │
│ Grafana (AMG) │
└─────────────────┘


デプロイ
高速パス:Container Insights(5 分)
オプション A:アカウ ントレベルで有効にする
aws ecs put-account-setting --name "containerInsights" --value "enabled"
オプション B:特定のクラスターで有効にする
aws ecs update-cluster-settings \
--cluster $CLUSTER_NAME \
--settings name=containerInsights,value=enabled
これだけです。ECS エージェントが自動的に収集を処理します。メトリクスは CloudWatch の ECS/ContainerInsights 名前空間に表示されます。
アドバンスドパス:AMP および X-Ray 用の ADOT Collector
ステップ 1:ADOT サイドカータスク定義を作成する
既存のタスク定義に ADOT Collector コンテナを追加します:
{
"name": "aws-otel-collector",
"image": "public.ecr.aws/aws-observability/aws-otel-collector:latest",
"cpu": 512,
"memory": 1024,
"command": [
"--config=/etc/ecs/container-insights/otel-task-metrics-config.yaml"
],
"portMappings": [
{ "containerPort": 2000, "protocol": "udp" },
{ "containerPort": 4317, "protocol": "tcp" }
],
"essential": true
}
カスタムパイプライン(例:Prometheus スクレイピング + AMP へのリモートライト)の場合は、設定を SSM Parameter Store に保存し、AOT_CONFIG_CONTENT 環境変数で参照します。
ステップ 2:IAM ロールを設定する
以下のポリシーを ECS タスクロールにアタッチします:
AWSXRayDaemonWriteAccess(トレーシング用)AmazonPrometheusRemoteWriteAccess(AMP 用)CloudWatchAgentServerPolicy(EMF メトリクス用)