

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用應用程式追蹤資料識別 Amazon ECS 最佳化機會
<a name="trace-data"></a>

Amazon ECS 與 AWS Distro for OpenTelemetry 整合，以從您的應用程式收集追蹤資料。Amazon ECS 使用 AWS Distro for OpenTelemetry 附屬容器來收集和路由追蹤資料 AWS X-Ray。如需詳細資訊，請參閱在 [AWS Amazon ECS 中設定 Distro for OpenTelemetry Collector](https://aws-otel.github.io/docs/setup/ecs)。然後，您可以使用 AWS X-Ray 來識別錯誤和例外狀況、分析效能瓶頸和回應時間。

若要讓 AWS Distro for OpenTelemetry Collector 將追蹤資料傳送到其中 AWS X-Ray，您的應用程式必須設定為建立追蹤資料。如需詳細資訊，請參閱《AWS X-Ray 開發人員指南》**中的[檢測您的 AWS X-Ray應用程式](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html)。

## AWS Distro for OpenTelemetry 與 整合所需的 IAM 許可 AWS X-Ray
<a name="trace-data-iam"></a>

Amazon ECS 與 AWS Distro for OpenTelemetry 整合需要您建立任務角色，並在任務定義中指定角色。建議您設定 AWS Distro for OpenTelemetry 附屬項目，將容器日誌路由至 CloudWatch Logs。

**重要**  
如果您也使用 AWS Distro for OpenTelemetry 整合收集應用程式指標，請確定您的任務 IAM 角色也包含該整合所需的許可。如需詳細資訊，請參閱[使用應用程式指標關聯 Amazon ECS 應用程式效能](metrics-data.md)。

建立角色後，請建立包含下列許可的政策，然後將該政策連接至該角色。
+ `logs:PutLogEvents`
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:DescribeLogStreams`
+ `logs:DescribeLogGroups`
+ `logs:PutRetentionPolicy`
+ `xray:PutTraceSegments`
+ `xray:PutTelemetryRecords`
+ `xray:GetSamplingRules`
+ `xray:GetSamplingTargets`
+ `xray:GetSamplingStatisticSummaries`
+ `ssm:GetParameters`

# 指定 AWS Distro for OpenTelemetry 附屬項目以在任務定義中 AWS X-Ray 整合
<a name="trace-data-containerdefinitions"></a>

Amazon ECS 主控台使用**使用追蹤收集**選項，簡化建立 AWS Distro for OpenTelemetry 附屬容器的程序。如需詳細資訊，請參閱[使用主控台建立 Amazon ECS 任務定義](create-task-definition.md)。

如果您不是使用 Amazon ECS 主控台，您可以將 AWS Distro for OpenTelemetry 附屬容器新增至任務定義。下列任務定義程式碼片段顯示容器定義，用於新增 AWS Distro for OpenTelemetry 附屬項目以進行 AWS X-Ray 整合。

```
{
	"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"
}
```