收集应用程序跟踪数据 - Amazon Elastic Container Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

收集应用程序跟踪数据

Amazon ECS 与 AWS Distro 集成 OpenTelemetry ,用于从您的应用程序收集跟踪数据。Amazon ECS 使用 AWS Distro fo OpenTelemetry r sidecar 容器来收集跟踪数据并将其路由到。 AWS X-Ray有关更多信息,请参阅在 Amazon ECS 中为 Collecto OpenTelemetry r 设置 AWS 发行版

要让 AWS Distro fo OpenTelemetry r Collector 向其发送跟踪数据 AWS X-Ray,必须将您的应用程序配置为创建跟踪数据。有关更多信息,请参阅 AWS X-Ray 开发人员指南中的分析 AWS X-Ray 的应用程序

AWS 发行版需要的 IAM 权限才能 OpenTelemetry 与集成 AWS X-Ray

Amazon ECS 与 AWS Distro 的集成 OpenTelemetry 要求您创建一个任务 IAM 角色并在任务定义中指定该角色。我们建议同时将 AWS Distro fo OpenTelemetry r sidecar 配置为将容器 CloudWatch 日志路由到日志,这也需要在任务定义中创建和指定任务执行 IAM 角色。Amazon ECS 控制台代表您处理任务执行 IAM 角色,但必须手动创建任务 IAM 角色。有关创建任务执行 IAM 角色的更多信息,请参阅 Amazon ECS 任务执行 IAM 角色

重要

如果您还使用 AWS 发行版收集应用程序指标进行 OpenTelemetry 集成,请确保您的任务 IAM 角色还包含该集成所需的权限。有关更多信息,请参阅收集应用程序指标

为 AWS Distro 创建任务 IAM 角色以进行集成 OpenTelemetry
  1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择 PoliciesCreate policy

  3. Create policy(创建策略)页面中,切换到 JSON 选项卡,将以下 IAM policy JSON 复制并粘贴到字段中,然后选择 Next: Tags(下一步:标签)。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets", "xray:GetSamplingStatisticSummaries" ], "Resource": "*" } ] }
  4. (可选)将一个或多个标签添加到角色,然后选择 Next: Review(下一步:审核)。

  5. 对于 Name(名称),指定 AWSDistroOpenTelemetryPolicyForXray

  6. 对于 Description(描述),指定可选描述,然后选择 Create policy(创建策略)。

  7. 在导航窗格中,选择 Roles(角色)和 Create role(创建角色)。

  8. Select type of trusted entity(选择受信任实体的类型)部分,选择 AWS 服务 Elastic Container Service

  9. 对于 Select your use case (选择使用案例),选择 Elastic Container Service Task (弹性容器服务任务),然后选择 Next: Permissions (下一步: 权限)。

  10. 在 “附加权限策略” 部分 AWSDistroOpenTelemetryPolicyForXray,搜索并选择策略,然后选择 “下一步:标签”。

  11. 对于添加标签(可选),指定要与策略关联的任何自定义标签,然后选择下一步:审核

  12. 对于 Role Name(角色名称),指定 AmazonECS_OpenTelemetryXrayRole,然后选择 Create role(创建角色)。

为任务定义中 AWS X-Ray 集成的 OpenTelemetry sidecar 指定 AWS 发行版

Amazon ECS 控制台使用 “使用跟踪收集” 选项简化了为 OpenTelemetry 边车容器创建 AWS Distro 的过程。有关更多信息,请参阅使用控制台创建任务定义

如果您不使用 Amazon ECS 控制台,则可以将 AWS Distro for s OpenTelemetry idecar 容器添加到任务定义中。以下任务定义片段显示了用于添加 AWS Distro for s OpenTelemetry idecar 以进行集成的容器定义。 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" }