将应用程序指标导出到 Amazon Managed Service for Prometheus - Amazon Elastic Container Service

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

将应用程序指标导出到 Amazon Managed Service for Prometheus

Amazon ECS 支持将您的任务级 CPU、内存、网络和存储指标以及自定义应用程序指标导出到 Amazon Managed Service for Prometheus。这是通过将 AWS Distro for s OpenTelemetry idecar 容器添加到任务定义中来完成的。Amazon ECS 控制台在创建新任务定义时添加了 “使用指标收集” 选项,从而简化了此过程。有关更多信息,请参阅使用控制台创建任务定义

这些指标将导出到 Amazon Managed Service for Prometheus,并可以使用 Amazon Managed Grafana 控制面板查看。您的应用程序必须使用 Prometheus 库或 SDK 进行检测。 OpenTelemetry 有关使用 OpenTelemetry SDK 测试应用程序的更多信息,请参阅发行版 OpenTelemetry中的AWS 发行版简介以获取 AWS 文档。 OpenTelemetry

使用 Prometheus 库时,您的应用程序必须公开用于抓取指标数据的 /metrics 终端节点。有关使用 Prometheus 库分析您的应用程序的更多信息,请参阅 Prometheus 文档中的 Prometheus 客户端库

注意事项

在使用 Fargate 上的 Amazon ECS 与 AWS Distro 集成, OpenTelemetry 向适用于 Prometheus 的亚马逊托管服务发送应用程序指标时,应考虑以下几点。

  • Fargat AWS e 上托管的 Amazon ECS 工作负载和托管在 Amazon EC2 实例上的亚马逊 ECS 工作负载支持 OpenTelemetry 集成发行版。目前不支持外部实例。

  • 默认情况下,在导出到亚马逊 Prometheus 托管服务时, AWS Distro 会 OpenTelemetry 包含应用程序指标的所有可用任务级维度。您还可以对应用程序进行分析以添加其他维度。有关更多信息,请参阅发行版中的适用于亚马逊 Prometheus 托管服务 Prometheus 的 Prometheus 远程写入导出器入门以获取文档。 AWS OpenTelemetry

AWS Distro 需要的 IAM 权限才能与适用于 Prometheus 的亚马逊托管服务 OpenTelemetry 集成

使用 Sidecar 发行版 OpenTelemetry的 Amazon ECS 与适用于 Prometheus AWS 的亚马逊托管服务集成,需要您创建任务 IAM 角色并在任务定义中指定角色。在注册任务定义之前,必须使用以下步骤手动创建此任务 IAM 角色。

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

重要

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

为 AWS Distro 创建任务 IAM 角色以与适用于 Prometheus 的亚马逊托管服务 OpenTelemetry 集成
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

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

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

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

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

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

在任务定义中为 OpenTelemetry sidecar 指定 AWS 发行版

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

如果您不使用 Amazon ECS 控制台,则可以手动将 AWS Distro fo OpenTelemetry r sidecar 容器添加到任务定义中。以下任务定义示例显示了用于为 Prometheus 集成的 Amazon 托管服务添加 OpenTelemetry Sidecar AWS 发行版的容器定义。

{ "family": "otel-using-cloudwatch", "taskRoleArn": "arn:aws:iam::111122223333:role/AmazonECS_OpenTelemetryCloudWatchRole", "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": "aws-region", "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/ecs-amp.yaml" ], "environment": [{ "name": "AWS_PROMETHEUS_ENDPOINT", "value": "https://aps-workspaces.aws-region.amazonaws.com/workspaces/ws-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/api/v1/remote_write" }], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "aws-region", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }