本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用适用于开放遥测的 AWS Distro 设置从 Amazon ECS 获取指标
本节介绍如何使用开放遥测发行版 (ADOT) 从亚马逊弹性容器服务 (Amazon ECS) 收集指标,并使用开放遥测发行版 (ADOT) 将其采集到适用于普罗米修斯的亚马逊托 AWS 管服务中。它还描述了如何在 Amazon Managed Grafana 中可视化您的指标。
先决条件
重要
在开始之前,您必须在具有默认设置的 AWS Fargate 集群上拥有一个 Amazon ECS 环境、一个 Amazon Managed Service for Prometheus 工作区以及一个 Amazon Managed Grafana 工作区。我们假设您熟悉容器工作负载、Amazon Managed Service for Prometheus 和 Amazon Managed Grafana。
有关更多信息,请参阅以下链接:
定义自定义 ADOT 收集器容器映像
使用以下配置文件作为模板来定义您自己的 ADOT 收集器容器映像。将 my-remote-URL
和 my-region
替换为您的 endpoint
和 region
值。将配置保存在名为 adot-config.yaml 的文件中。
注意
此配置使用 sigv4auth
扩展验证对 Amazon Managed Service for Prometheus 的调用。有关配置的更多信息sigv4auth
,请参阅 Authenticator-Sigv4 on
receivers: prometheus: config: global: scrape_interval: 15s scrape_timeout: 10s scrape_configs: - job_name: "prometheus" static_configs: - targets: [ 0.0.0.0:9090 ] awsecscontainermetrics: collection_interval: 10s processors: filter: metrics: include: match_type: strict metric_names: - ecs.task.memory.utilized - ecs.task.memory.reserved - ecs.task.cpu.utilized - ecs.task.cpu.reserved - ecs.task.network.rate.rx - ecs.task.network.rate.tx - ecs.task.storage.read_bytes - ecs.task.storage.write_bytes exporters: prometheusremotewrite: endpoint:
my-remote-URL
auth: authenticator: sigv4auth logging: loglevel: info extensions: health_check: pprof: endpoint: :1888 zpages: endpoint: :55679 sigv4auth: region:my-region
service: aps service: extensions: [pprof, zpages, health_check, sigv4auth] pipelines: metrics: receivers: [prometheus] exporters: [logging, prometheusremotewrite] metrics/ecs: receivers: [awsecscontainermetrics] processors: [filter] exporters: [logging, prometheusremotewrite]
将您的 ADOT 收集器容器映像推送到 Amazon ECR 存储库
使用 Dockerfile 创建容器映像,然后将其推送到 Amazon Elastic Container Registry(ECR)存储库。
-
构建 Dockerfile 以将您的容器映像复制并添加到 OTEL Docker 映像中。
FROM public.ecr.aws/aws-observability/aws-otel-collector:latest COPY adot-config.yaml /etc/ecs/otel-config.yaml CMD ["--config=/etc/ecs/otel-config.yaml"]
-
创建 Amazon ECR 存储库。
# create repo: COLLECTOR_REPOSITORY=$(aws ecr create-repository --repository aws-otel-collector \ --query repository.repositoryUri --output text)
-
创建容器映像。
# build ADOT collector image: docker build -t $COLLECTOR_REPOSITORY:ecs .
注意
这会假设您在运行容器的环境中构建容器。否则,您可能需要在构建映像时使用
--platform
参数。 -
登录 Amazon ECR 存储库。将
my-region
替换为您的region
值。# sign in to repo: aws ecr get-login-password --region
my-region
| \ docker login --username AWS --password-stdin $COLLECTOR_REPOSITORY -
推送您的容器映像。
# push ADOT collector image: docker push $COLLECTOR_REPOSITORY:ecs
创建 Amazon ECS 任务定义以抓取 Amazon Managed Service for Prometheus
创建 Amazon ECS 任务定义以抓取 Amazon Managed Service for Prometheus。您的任务定义应包括一个名为 adot-collector
的容器和一个名为 prometheus
的容器。prometheus
生成指标,adot-collector
抓取 prometheus
。
注意
Amazon Managed Service for Prometheus 作为一项服务运行,从容器中收集指标。在本例中,容器以代理模式在本地运行 Prometheus,将本地指标发送到 Amazon Managed Service for Prometheus。
示例:任务定义
以下是任务定义具体形式的示例。您可以使用此示例作为模板来创建自己的任务定义。将 adot-collector
的 image
值替换为您的存储库 URL 和映像标签($COLLECTOR_REPOSITORY:ecs
)。将 adot-collector
和 prometheus
的 region
值替换为您的 region
值。
{ "family": "adot-prom", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "adot-collector", "image": "
account_id
.dkr.ecr.region
.amazonaws.com/image-tag
", "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-adot-collector", "awslogs-region": "my-region
", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } }, { "name": "prometheus", "image": "prom/prometheus:main", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-prom", "awslogs-region": "my-region
", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024" }
将 AWS 托管式策略 AmazonPrometheusRemoteWriteAccess
附加到您任务的 IAM 角色
要将抓取的指标发送到适用于 Prometheus 的亚马逊托管服务,您的 Amazon ECS 任务必须具有正确的权限才能 AWS 为您调用 API 操作。您必须为任务创建 IAM 角色和并将 AmazonPrometheusRemoteWriteAccess
策略附加至其中。有关创建该角色并附加策略的更多信息,请参阅为任务创建 IAM 角色和策略。
在您将 AmazonPrometheusRemoteWriteAccess
附加到您的 IAM 角色并使用该角色执行任务后,Amazon ECS 可以将您抓取的指标发送到 Amazon Managed Service for Prometheus。
在 Amazon Managed Grafana 中可视化您的指标
重要
在开始之前,您必须在 Amazon ECS 任务定义上运行 Fargate 任务。否则,Amazon Managed Service for Prometheus 将无法使用您的指标。
-
在 Amazon Managed Grafana 工作空间的导航窗格中,选择图标下方的数据源。 AWS
-
在数据来源选项卡上的服务中,选择 Amazon Managed Service for Prometheus,然后选择您的默认区域。
-
选择添加数据来源。
-
使用
ecs
和prometheus
前缀查询和查看您的指标。