使用 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 创建任务角色
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在导航窗格中选择策略,然后选择创建策略。
-
选择 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 服务)。
-
在页面下方,选择 Elastic Container Service Task(Elastic Container 服务任务),然后选择 Next: Permissions(下一步:权限)。
-
在策略列表中,搜索 AWSDistroOpenTelemetryPolicy。
-
选中 AWSDistroOpenTelemetryPolicy 旁的复选框。
-
选择 Next: Tags(下一步:标签),然后选择 Next: Review(下一步:审核)。
-
对于 Role name(角色名称),输入
AWSOpenTelemetryTaskRole
,然后选择 Create role(创建角色)。
步骤 2:创建任务执行角色
下一步是为 Amazon OpenTelemetry Collector 创建任务执行角色。
为 Amazon Distro for OpenTelemetry 创建任务执行角色
通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/
。 -
在左侧的导航窗格中,选择 Roles(角色),然后选择 Create role(创建角色)。
-
在服务列表中,选择 Elastic Container Service(Elastic Container 服务)。
-
在页面下方,选择 Elastic Container Service Task(Elastic Container 服务任务),然后选择 Next: Permissions(下一步:权限)。
-
在策略列表中,搜索 AmazonECSTaskExecutionRolePolicy,然后选中 AmazonECSTaskExecutionRolePolicy 旁的复选框。
-
在策略列表中,搜索 CloudWatchLogsFullAccess,然后选中 CloudWatchLogsFullAccess 旁的复选框。
-
在策略列表中,搜索 AmazonSSMReadOnlyAccess,然后选中 AmazonSSMReadOnlyAccess 旁的复选框。
-
依次选择 Next: Tags(下一步:标签)和 Next: Review(下一步:查看)。
-
对于 Role name(角色名称),输入
AWSOpenTelemetryTaskExecutionRole
,然后选择 Create role(创建角色)。
步骤 3:创建任务定义
下一步是创建任务定义。
为 Amazon Distro for OpenTelemetry 创建任务定义
在 https://console.aws.amazon.com/ecs/
处打开 Amazon 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 的端口映射。
-
完成添加容器的步骤。
有关将 Amazon OpenTelemetry 收集器与 Amazon ECS 结合使用的更多信息,请参阅在 Amazon Elastic Container Service 中设置 Amazon Distro for OpenTelemetry Collector
步骤 4:运行任务
最后一步是运行您创建的任务。
运行 Amazon Distro for OpenTelemetry 的任务
在 https://console.aws.amazon.com/ecs/
处打开 Amazon ECS 控制台。 -
在左侧导航窗格中,选择 Task Definitions(任务定义),然后选择您刚刚创建的任务。
-
选择 Actions,Run Task。
接下来,您可以在 CloudWatch 控制台中检查新指标。
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在左侧导航窗格中,选择 Metrics。
您会看到 ECS/ContainerInsights 命名空间。选择该命名空间,然后您会看到八个指标。