AWS Distro for OpenTelemetry を使用した Amazon ECS での Container Insights の設定
このセクションは、AWS Distro for OpenTelemetry を使用して Amazon ECS クラスターで CloudWatch Container Insights を設定する場合に使用します。AWS Distro for Open Telemetry の詳細については、AWS Distro for OpenTelemetry
以下の手順では、クラスターが Amazon ECS を実行するように既に設定されていることを前提としています。Amazon ECS で AWS Distro for Open Telemetry を使用し、この目的のために Amazon ECS クラスターを設定する方法の詳細については、Amazon Elastic Container Service で AWS Distro for OpenTelemetry Collector を設定する
ステップ 1: タスクロールを作成する
最初のステップでは、AWS OpenTelemetry Collector が使用するクラスター内にタスクロールを作成します。
AWS Distro for OpenTelemetry のタスクロールを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[Policies (ポリシー)] を選択し、[Create Policy (ポリシーの作成)] を選択します。
-
[JSON] タブを選択し、以下のポリシーをコピーします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "ssm:GetParameters" ], "Resource": "*" } ] }
-
[Review policy] (ポリシーの確認) を選択します。
-
名前に
AWSDistroOpenTelemetryPolicy
と入力し、[Create policy] (ポリシーの作成) を選択します。 -
左側のナビゲーションペインから、[Roles] (ロール) を選択してから、[Create role] (ロールの作成) をクリックします。
-
サービスのリストで、[Elastic Container Service] を選択します。
-
ページの下部にある [Elastic Container Service Task] を選択し、[Next: Permissions] (次へ: アクセス許可) を選択します。
-
ポリシーのリストで AWSDistroOpenTelemetryPolicy を検索します。
-
AWSDistroOpenTelemetryPolicy の横にあるチェックボックスをオンにします。
-
[Next: Tags] (次へ: タグ)、[Next: Review] (次へ: 確認) の順に選択します。
-
[Role name] (ロール名) に
AWSOpenTelemetryTaskRole
と入力し、[Create role] (ロールの作成) を選択します。
ステップ 2: タスク実行ロールを作成する
次のステップでは、AWS OpenTelemetry Collector のタスク実行ロールを作成します。
AWS Distro for OpenTelemetry のタスク実行ロールを作成するには
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
左側のナビゲーションペインから、[Roles] (ロール) を選択してから、[Create role] (ロールの作成) をクリックします。
-
サービスのリストで、[Elastic Container Service] を選択します。
-
ページの下部にある [Elastic Container Service Task] を選択し、[Next: Permissions] (次へ: アクセス許可) を選択します。
-
ポリシーのリストで AmazonECSTaskExecutionRolePolicy を検索し、AmazonECSTaskExecutionRolePolicy の横にあるチェックボックスをオンにします。
-
ポリシーのリストで CloudWatchLogsFullAccess を検索し、CloudWatchLogsFullAccess の横にあるチェックボックスをオンにします。
-
ポリシーのリストで AmazonSSMReadOnlyAccess を検索し、AmazonSSMReadOnlyAccess の横にあるチェックボックスをオンにします。
-
[Next: Tags] (次へ: タグ)、[Next: Review] (次へ: 確認) の順に選択します。
-
[Role name] (ロール名) に
AWSOpenTelemetryTaskExecutionRole
と入力し、[Create role] (ロールの作成) を選択します。
ステップ 3: タスク定義を作成する
次のステップでは、タスク定義を作成します。
AWS Distro for OpenTelemetry のタスク定義を作成するには
Amazon ECS コンソール (https://console.aws.amazon.com/ecs/
) を開きます。 -
左のナビゲーションペインで [Task Definitions] (タスク定義) を選択し、次に [Create new Task Definition] (新規タスク定義の作成) を選択します。
-
FARGATE または EC2 を選択し、[Next step] (次のステップ) を選択します。
-
タスク定義名 (
aws-otel
など) を入力します。 -
[Task Role] (タスクロール) で、前に作成した AWSOpenTelemetryTaskRole を選択します。
-
[Task execution role] (タスク実行ロール) で、前に作成した AWSOpenTelemetryTaskExecutionRole を選択します。
-
[Task memory] (タスクメモリ) と [Task CPU] (タスク CPU) を入力します。
-
[Container Definitions (コンテナの定義)] で [Add container (コンテナの追加)] を選択します。
-
[Container name] (コンテナ名) で、
aws-otel-collector
と入力します。[Image] (イメージ) で、public.ecr.aws/aws-observability/aws-otel-collector
と入力します。 -
[ENVIRONMENT] (環境) の [Command] (コマンド) で、
--config=/etc/ecs/container-insights/otel-task-metrics-config.yaml
と入力しますこの YAML ファイルは Docker イメージに含まれており、コンテナメトリクスを消費するための設定が含まれています。
-
EC2 起動タイプを使用している場合は、TCP に 55680 のポートマッピングを入力します。
-
コンテナを追加する手順を完了します。
AWS OpenTelemetry Collector を Amazon ECS で使用する方法の詳細については、Amazon Elastic Container Service での AWS Distro for OpenTelemetry Collector の設定
ステップ 4: タスクを実行する
最後のステップでは、作成したタスクを実行します。
AWS Distro for OpenTelemetry のタスクを実行するには
Amazon ECS コンソール (https://console.aws.amazon.com/ecs/
) を開きます。 -
左のナビゲーションペインで、[Task Definitions] (タスク定義) を選択し、作成したタスクを選択します。
-
[Actions]、[Run Task] を選択します。
次に、CloudWatch コンソールで新しいメトリクスを確認できます。
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 -
左のナビゲーションペインで [Metrics] (メトリクス) を選択します。
ECS/ContainerInsights 名前空間が表示されます。その名前空間を選択すると、8 つのメトリクスが表示されます。