概要
AWS Distro for OpenTelemetry サイドカーを作成することで、Amazon ECS は、アプリケーションから AWS X-Ray にトレースをルーティングします。
設定
必要な設定は 2 つだけ
- タスクロールを作成する
- AWS Distro for OpenTelemetry サイドカーコンテナを追加する
タスクロールを作成する
タスクが、AWS X-Ray にトレースをルーティングするための権限をタスクロールに追加してあげる必要があります。
※ AWSXRayDaemonWriteAccess
管理ポリシーをアタッチしてあげれば良いです。
AWSDistroOpenTelemetryPolicyForXray
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords",
"xray:GetSamplingRules",
"xray:GetSamplingTargets",
"xray:GetSamplingStatisticSummaries"
],
"Resource": "*"
}
]
}
AmazonECS_OpenTelemetryXrayRole
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ecs-tasks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
AWS Distro for OpenTelemetry サイドカーコンテナを追加する
コンソールからの場合は、モニタリング - オプションで、AWS Distro for OpenTelemetry サイドカーコンテナを簡単に作成できます。
コンソールを使用していない場合は、AWS OpenTelemetry Distro サイドカーコンテナ をタスク定義に追加します。
{
"family": "otel-using-xray",
"taskRoleArn": "arn:aws:iam::111122223333:role/AmazonECS_OpenTelemetryXrayRole",
"executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
"containerDefinitions": [{
"name": "aws-otel-emitter",
"image": "application-image",
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "true",
"awslogs-group": "/ecs/aws-otel-emitter",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
},
"dependsOn": [{
"containerName": "aws-otel-collector",
"condition": "START"
}]
},
{
"name": "aws-otel-collector",
"image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.30.0",
"essential": true,
"command": [
"--config=/etc/ecs/otel-instance-metrics-config.yaml"
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-create-group": "True",
"awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
}
}
],
"networkMode": "awsvpc",
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "1024",
"memory": "3072"
}
動作確認
次の通り、AWS Distro for OpenTelemetry サイドカーコンテナが追加されました。
なお、main-container は、AWS Open Source Blog に記載のあったイメージを使用させていただいております。
次の通りコンテナにリクエスします。
curl -v http://X.X.X.X:8080/outgoing-http-call
CloudWatch > トレースを確認し記録されていることを確認しましょう。