將應用程式指標匯出至 Amazon Managed Service for Prometheus - Amazon Elastic Container Service

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

將應用程式指標匯出至 Amazon Managed Service for Prometheus

Amazon ECS 支援將您的任務層級 CPU、記憶體、網路和儲存指標,以及自訂應用程式指標匯出至 Amazon Managed Service for Prometheus。這是通過將 OpenTelemetry 附屬容器的 AWS Distro 添加到您的任務定義中來完成的。Amazon ECS 主控台透過在建立新任務定義時新增「使用指標收集」選項來簡化此程序。如需詳細資訊,請參閱 使用主控台建立 Amazon ECS 任務定義

這些指標將匯出至 Amazon Managed Service for Prometheus,並可以使用 Amazon Managed Grafana 儀表板查看。您的應用程式必須使用 Prometheus 程式庫或 SDK 進行檢測。 OpenTelemetry 有關使用 OpenTelemetry SDK 檢測應用程序的更多信息,請參閱發行版 OpenTelemetry中的發行AWS 版簡介以獲取文檔。 AWS OpenTelemetry

使用 Prometheus 程式庫時,您的應用程式必須公開 /metrics 端點,用於抓取指標資料。如需有關使用 Prometheus 程式庫檢測應用程式的詳細資訊,請參閱 Prometheus 文件中的 Prometheus 用戶端程式庫

考量事項

在與 AWS Distro 整合的 Fargate 上使用 Amazon ECS 時,應考慮以下事項,以便將應用程式指標傳送 OpenTelemetry 到適用於 Prometheus 的 Amazon 託管服務。

  • 對於在 Fargate 託管的 Amazon ECS 工作負載和 Amazon Amazon EC2 實例上託管的亞馬遜 ECS 工作負載支持 OpenTelemetry 整合的發行 AWS 版。目前不支援外部執行個體。

  • 預設情況下,當匯出到適用於 Prometheus 的 Amazon 受管服務時, AWS Distro for 會 OpenTelemetry 包含應用程式指標的所有可用任務層級維度。您還可以檢測應用程式以增加其他維度。有關更多信息,請參閱發行版中的 Prometheus 適用於 Prometheus 的 Amazon 受管服務的 Prometheus 遠端寫入導出器入門以獲取文檔。 AWS OpenTelemetry

AWS 發行版所需的 IAM 許可,以便與 Prometheus 的 Amazon 託管服務 OpenTelemetry 整合

使用 OpenTelemetry附屬發行 AWS 版與適用於 Prometheus 的 Amazon ECS 管理服務整合時,您必須建立任務 IAM 角色,並在任務定義中指定角色。註冊任務定義之前,必須使用以下步驟手動建立此任務 IAM 角色。

我們建議還將 AWS Distro 配置為將容器日誌路由到 CloudWatch 日誌,這需要在任務定義中創建和指定任務執行 IAM 角色。 OpenTelemetry Amazon ECS 主控台會代表您處理任務執行 IAM 角色,但任務 IAM 角色必須手動建立。如需有關為任務建立 IAM 角色的詳細資訊,請參閱 Amazon ECS 任務執行 IAM 角色

重要

如果您還使用 AWS Distro 收集應用程序跟踪數據進行 OpenTelemetry 集成,請確保您的任務 IAM 角色還包含該集成所需的許可。如需詳細資訊,請參閱 使用應用程式追蹤資料識別 Amazon ECS 最佳化機會

建立彈性容器服務 (IAM 主控台) 的服務角色
  1. 登入 AWS Management Console 並開啟身分與存取權管理主控台,網址為 https://console.aws.amazon.com/iam/

  2. 在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色

  3. 對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務

  4. 對於服務或使用案例,請選擇彈性容器服務,然後選擇彈性容器服務工作使用案例。

  5. 選擇下一步

  6. 在「新增權限」區段中,搜尋 AmazonPrometheusRemoteWriteAccess,然後選取原則。

  7. (選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。

    1. 開啟 [設定權限界限] 區段,然後選擇 [使用權限界限] 控制最大角色權限

      IAM 在您的帳戶中包含受 AWS 管政策和客戶管理政策的清單。

    2. 選取用於許可界限的政策。

  8. 選擇下一步

  9. 輸入角色名稱或角色名稱尾碼,以協助您識別角色的用途。

    重要

    命名角色時,請注意下列事項:

    • 角色名稱在您的內部必須是唯一的 AWS 帳戶,並且不能根據大小寫將其唯一。

      例如,請勿建立同時命名為PRODROLE和的角色prodrole。當角色名稱用於策略中或作為 ARN 的一部分時,角色名稱會區分大小寫,但是當主控台中的客戶 (例如在登入程序期間) 顯示角色名稱時,角色名稱不區分大小寫。

    • 您無法在建立角色之後編輯該角色的名稱,因為其他實體可能會參照該角色。

  10. (選擇性) 在說明中,輸入角色的說明。

  11. (選擇性) 若要編輯角色的使用案例和權限,請在步驟 1:選取信任的實體步驟 2:新增權限區段中,選擇編輯

  12. (選擇性) 若要協助識別、組織或搜尋角色,請將標籤新增為鍵值配對。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 資源

  13. 檢閱角色,然後選擇 Create role (建立角色)。

在任務定 AWS 義中指定 OpenTelemetry 側車的發行版

Amazon ECS 主控台使用「使用指標收集」選項簡化了建立 OpenTelemetry 附屬容器發行 AWS 版的體驗。如需詳細資訊,請參閱 使用主控台建立 Amazon ECS 任務定義

如果您沒有使用 Amazon ECS 主控台,您可以手動將附屬容器的 AWS 發 OpenTelemetry 行版新增至您的任務定義。以下任務定義示例顯示了為 Prometheus 集成的 Amazon 受管服務添加適用於附屬發 OpenTelemetry 行 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" }