使用 Amazon Distro for OpenTelemetry 在 Amazon ECS 上设置 Container Insights - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 Amazon Distro for OpenTelemetry 在 Amazon ECS 上设置 Container Insights

如果需要使用 Amazon Distro for OpenTelemetry 在 Amazon ECS 集群上设置 CloudWatch Container Insights,请使用此部分。有关 Amazon Distro for Open Telemetry 的更多信息,请参阅 Amazon Distro for OpenTelemetry

这些步骤假设您已具有正在运行 Amazon ECS 的集群。有关将 Amazon Distro for Open Telemetry 与 Amazon ECS 结合使用以及为此设置 Amazon ECS 集群的更多信息,请参阅在 Amazon Elastic Container Service 中设置 Amazon Distro for OpenTelemetry Collector

步骤 1:创建任务角色

第一步是在集群中创建 Amazon OpenTelemetry Collector 将使用的任务角色。

为 Amazon Distro for OpenTelemetry 创建任务角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中选择策略,然后选择创建策略

  3. 选择 JSON 选项卡,然后复制以下策略:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "ssm:GetParameters" ], "Resource": "*" } ] }
  4. 选择 Review policy (审核策略)

  5. 对于名称,输入 AWSDistroOpenTelemetryPolicy,然后选择 Create policy(创建策略)

  6. 在左侧的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

  7. 在服务列表中,选择 Elastic Container Service(Elastic Container 服务)

  8. 在页面下方,选择 Elastic Container Service Task(Elastic Container 服务任务),然后选择 Next: Permissions(下一步:权限)

  9. 在策略列表中,搜索 AWSDistroOpenTelemetryPolicy

  10. 选中 AWSDistroOpenTelemetryPolicy 旁的复选框。

  11. 选择 Next: Tags(下一步:标签),然后选择 Next: Review(下一步:审核)

  12. 对于 Role name(角色名称),输入 AWSOpenTelemetryTaskRole,然后选择 Create role(创建角色)

步骤 2:创建任务执行角色

下一步是为 Amazon OpenTelemetry Collector 创建任务执行角色。

为 Amazon Distro for OpenTelemetry 创建任务执行角色

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在左侧的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)

  3. 在服务列表中,选择 Elastic Container Service(Elastic Container 服务)

  4. 在页面下方,选择 Elastic Container Service Task(Elastic Container 服务任务),然后选择 Next: Permissions(下一步:权限)

  5. 在策略列表中,搜索 AmazonECSTaskExecutionRolePolicy,然后选中 AmazonECSTaskExecutionRolePolicy 旁的复选框。

  6. 在策略列表中,搜索 CloudWatchLogsFullAccess,然后选中 CloudWatchLogsFullAccess 旁的复选框。

  7. 在策略列表中,搜索 AmazonSSMReadOnlyAccess,然后选中 AmazonSSMReadOnlyAccess 旁的复选框。

  8. 依次选择 Next: Tags(下一步:标签)Next: Review(下一步:查看)

  9. 对于 Role name(角色名称),输入 AWSOpenTelemetryTaskExecutionRole,然后选择 Create role(创建角色)

步骤 3:创建任务定义

下一步是创建任务定义。

为 Amazon Distro for OpenTelemetry 创建任务定义

  1. https://console.aws.amazon.com/ecs/ 处打开 Amazon ECS 控制台。

  2. 在左侧的导航窗格中,依次选择 Task Definitions(任务定义)Create new Task Definition(创建新任务定义)

  3. 选择 FARGATEEC2,然后选择 Next step(下一步)

  4. 输入任务定义名称,如 aws-otel

  5. 对于 Task Role(任务角色),选择您之前创建的 AWSOpenTelemetryTaskRole

  6. 对于 Task execution role(任务执行角色),选择您之前创建的 AWSOpenTelemetryTaskExecutionRole

  7. 填写 Task memory(任务内存)Task CPU(任务 CPU)

  8. Container Definitions (容器定义) 下,选择 Add container (添加容器)

  9. 对于 Container name(容器名称),输入 aws-otel-collector。对于 Image(镜像),输入 public.ecr.aws/aws-observability/aws-otel-collector

  10. ENVIRONMENT(环境)下,对于 Command(命令)输入 --config=/etc/ecs/container-insights/otel-task-metrics-config.yaml

    此 YAML 文件包含在 Docker 镜像中,并包含使用容器指标的配置。

  11. 如果使用的是 EC2 启动类型,请为 TCP 输入 55680 的端口映射。

  12. 完成添加容器的步骤。

有关将 Amazon OpenTelemetry 收集器与 Amazon ECS 结合使用的更多信息,请参阅在 Amazon Elastic Container Service 中设置 Amazon Distro for OpenTelemetry Collector

步骤 4:运行任务

最后一步是运行您创建的任务。

运行 Amazon Distro for OpenTelemetry 的任务

  1. https://console.aws.amazon.com/ecs/ 处打开 Amazon ECS 控制台。

  2. 在左侧导航窗格中,选择 Task Definitions(任务定义),然后选择您刚刚创建的任务。

  3. 选择 ActionsRun Task

    接下来,您可以在 CloudWatch 控制台中检查新指标。

  4. 访问 https://console.aws.amazon.com/cloudwatch/,打开 CloudWatch 控制台。

  5. 在左侧导航窗格中,选择 Metrics

    您会看到 ECS/ContainerInsights 命名空间。选择该命名空间,然后您会看到八个指标。