ECS使用開放式遙測 AWS 發行版設定從 Amazon 擷取指標 - Amazon Managed Service for Prometheus

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ECS使用開放式遙測 AWS 發行版設定從 Amazon 擷取指標

本節說明如何從 Amazon 彈性容器服務 (AmazonECS) 收集指標,並使用開放式遙測發行 AWS 版 () 將指標導入到適用於 Prometheus 的 Amazon 受管服務。ADOT這同時說明如何在 Amazon Managed Grafana 中將指標視覺化。

必要條件

重要

在開始之前,您必須在具有預設設定的 AWS Fargate 叢集上擁有 Amazon ECS 環境、Prometheus 適用的 Amazon 受管服務工作區,以及 Amazon 受管的 Grafana 工作區。我們假設您熟悉容器工作負載、Amazon Managed Service for Prometheus,以及 Amazon Managed Grafana。

如需詳細資訊,請參閱下列連結:

  • 如需如何使用預設設定在 Fargate 叢集上建立 Amazon ECS 環境的詳細資訊,請參閱 Amazon ECS 開發人員指南中的建立叢集

  • 如需如何建立 Amazon Managed Service for Prometheus 的詳細資訊,請參閱《Amazon Managed Service for Prometheus 使用者指南》中的建立工作區

  • 如需如何建立 Amazon Managed Grafana 工作區的詳細資訊,請參閱《Amazon Managed Grafana 使用者指南》中的建立工作區

步驟 1:定義自訂ADOT收集器容器映像

使用下列組態檔做為範本,以定義您自己的ADOT收集器容器映像。Replace (取代) my-remote-URL 以及 my-region 與你的endpointregion價值觀。將組態儲存在一個名為 adot-config.yaml 檔案中的組態。

注意

此組態使用 sigv4auth 延伸來驗證 Amazon Managed Service for Prometheus 的呼叫。如需有關設定的詳細資訊sigv4auth,請參閱驗證器-Sigv4 開啟。 GitHub

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 存儲庫

使用 Docker 檔案建立容器映像檔,並將其推送至 Amazon 彈性容器登錄 (ECR) 儲存庫。

  1. 構建 Docker 文件以復制容器映像並將其添加到 Docker 映像中OTEL。

    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"]
  2. 創建一個 Amazon ECR 存儲庫。

    # create repo: COLLECTOR_REPOSITORY=$(aws ecr create-repository --repository aws-otel-collector \ --query repository.repositoryUri --output text)
  3. 建立容器映像。

    # build ADOT collector image: docker build -t $COLLECTOR_REPOSITORY:ecs .
    注意

    這假設您正在執行容器的相同環境中建構容器。若否,您可能需要在建立映像時使用 --platform 參數。

  4. 登錄到 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
  5. 推送您的容器映像。

    # push ADOT collector image: docker push $COLLECTOR_REPOSITORY:ecs

步驟 3:創建一個 Amazon ECS 任務定義以抓取 Prometheus 的 Amazon 託管服務

創建一個 Amazon ECS 任務定義以抓取 Prometheus 的 Amazon 託管服務。您的工作定義應包含名為 adot-collector 的容器和名為 prometheus 的容器。prometheus 產生指標,和 adot-collector 抓取 prometheus

注意

Amazon Managed Service for Prometheus 以服務的形式執行,並從容器收集指標。在這種情況下,容器會以代理程式模式在本端執行 Prometheus,並將本端指標傳送至 Amazon Managed Service for Prometheus。

範例:任務定義

以下為任務定義外觀的範例。您可以使用此範例作為建立您任務定義的範本。將的imageadot-collector值取代為儲存庫URL和影像標籤 ($COLLECTOR_REPOSITORY:ecs)。將 adot-collectorprometheusregion 個值替換為 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 的 Amazon 託管服務

要將抓取的指標發送到 Prometheus 的 Amazon 託管服務,您的 Amazon ECS 任務必須具有正確的許可才能為您調用操作。 AWS API您必須為工作建立IAM角色,並將AmazonPrometheusRemoteWriteAccess原則附加至該角色。如需有關建立此角色和附加原則的詳細資訊,請參閱為工作建立IAM角色和原則

在您連接AmazonPrometheusRemoteWriteAccess到您的IAM角色並將該角色用於任務後,Amazon ECS 可以將抓取的指標發送到 Prometheus 的 Amazon 託管服務。

步驟 5:在 Amazon 受管的 Grafana 中視覺化您的指標

重要

在開始之前,您必須在 Amazon 任務定義上運行 Fargate ECS 任務。否則,Amazon Managed Service for Prometheus 將無法使用您的指標。

  1. 在 Amazon 受管的 Grafana 工作區中的導覽窗格中,選擇圖示 AWS 下的資料來源

  2. 資料來源索引標籤上,針對服務選取 Amazon Managed Service for Prometheus,然後選擇您的預設區域

  3. 選擇 [新增資料來源]

  4. 使用 ecsprometheus 個前綴查詢和檢視您的指標。