本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ECS使用 AWS Distro 进行开放遥测设置从亚马逊获取的指标
本节介绍如何从亚马逊弹性容器服务(亚马逊)收集指标,并 AWS 使用开放遥测发行版(ECS)将这些指标采集到适用于 Prometheus 的亚马逊 Prometheus 托管服务()。ADOT它还描述了如何在 Amazon Managed Grafana 中可视化您的指标。
先决条件
重要
在开始之前,您必须在具有默认设置的 AWS Fargate 集群上安装亚马逊ECS环境、适用于 Prometheus 的亚马逊托管服务工作空间和亚马逊托管 Grafana 工作空间。我们假设您熟悉容器工作负载、Amazon Managed Service for Prometheus 和 Amazon Managed Grafana。
有关更多信息,请参阅以下链接:
步骤 1:定义自定义ADOT收集器容器镜像
使用以下配置文件作为模板来定义自己的ADOT收集器容器镜像。Replace(替换) 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]
第 2 步:将您的ADOT收藏器容器镜像推送到 Amazon ECR 存储库
使用 Dockerfile 创建您的容器镜像并将其推送到亚马逊弹性容器注册表 (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"]
-
创建亚马逊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 存储库。Replace(替换)
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
第 3 步:创建亚马逊ECS任务定义以抓取 Prometheus 的亚马逊托管服务
创建亚马逊ECS任务定义以抓取 Prometheus 的亚马逊托管服务。您的任务定义应包括一个名为 adot-collector
的容器和一个名为 prometheus
的容器。prometheus
生成指标,adot-collector
抓取 prometheus
。
注意
Amazon Managed Service for Prometheus 作为一项服务运行,从容器中收集指标。在本例中,容器以代理模式在本地运行 Prometheus,将本地指标发送到 Amazon Managed Service for Prometheus。
示例:任务定义
以下是任务定义具体形式的示例。您可以使用此示例作为模板来创建自己的任务定义。将的image
adot-collector
值替换为存储库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" }
第 4 步:向您的任务授予访问适用于 Prometheus 的亚马逊托管服务的权限
要将抓取的指标发送到适用于 Prometheus 的亚马逊托管服务,您的ECS亚马逊任务必须具有正确的权限才能为您调用操作。 AWS API您必须为任务创建IAM角色并将AmazonPrometheusRemoteWriteAccess
策略附加到该角色上。有关创建此角色和附加策略的更多信息,请参阅为您的任务创建IAM角色和策略。
在您加入您的AmazonPrometheusRemoteWriteAccess
IAM角色并使用该角色执行任务后,亚马逊ECS可以将您抓取的指标发送到适用于 Prometheus 的亚马逊托管服务。
第 5 步:在 Amazon Managed Grafana 中可视化您的指标
重要
在开始之前,您必须对您的亚马逊任务定义运行 Fargate ECS 任务。否则,Amazon Managed Service for Prometheus 将无法使用您的指标。
-
在 Amazon Managed Grafana 工作空间的导航窗格中,选择图标下方的数据源。 AWS
-
在数据来源选项卡上的服务中,选择 Amazon Managed Service for Prometheus,然后选择您的默认区域。
-
选择添加数据来源。
-
使用
ecs
和prometheus
前缀查询和查看您的指标。