本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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。
如需詳細資訊,請參閱下列連結:
步驟 1:定義自訂ADOT收集器容器映像
使用下列組態檔做為範本,以定義您自己的ADOT收集器容器映像。Replace (取代) my-remote-URL
以及 my-region
與你的endpoint
和region
價值觀。將組態儲存在一個名為 adot-config.yaml 檔案中的組態。
注意
此組態使用 sigv4auth
延伸來驗證 Amazon Managed Service for Prometheus 的呼叫。如需有關設定的詳細資訊sigv4auth
,請參閱驗證器-Sigv4
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) 儲存庫。
-
構建 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"]
-
創建一個 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儲庫。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:創建一個 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。
範例:任務定義
以下為任務定義外觀的範例。您可以使用此範例作為建立您任務定義的範本。將的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 的 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 將無法使用您的指標。
-
在 Amazon 受管的 Grafana 工作區中的導覽窗格中,選擇圖示 AWS 下的資料來源。
-
在資料來源索引標籤上,針對服務選取 Amazon Managed Service for Prometheus,然後選擇您的預設區域。
-
選擇 [新增資料來源]。
-
使用
ecs
和prometheus
個前綴查詢和檢視您的指標。