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

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

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

Amazon ECS支援將您的任務層級 CPU、記憶體、網路和儲存指標和自訂應用程式指標匯出至 Amazon Managed Service for Prometheus。方法是將 OpenTelemetry Sidecar AWS 容器的 Distro 新增至您的任務定義。Amazon ECS主控台會在建立新的任務定義時新增使用指標集合選項,以簡化此程序。如需詳細資訊,請參閱使用主控台建立 Amazon ECS任務定義

這些指標將匯出至 Amazon Managed Service for Prometheus,並可以使用 Amazon Managed Grafana 儀表板查看。您的應用程式必須使用 Prometheus 程式庫或 進行測試 OpenTelemetry SDK。如需使用 測試應用程式的詳細資訊 OpenTelemetry SDK,請參閱 AWS Distro 中的 Distro 簡介 OpenTelemetry以取得 OpenTelemetry 文件。 AWS

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

考量事項

使用 Amazon ECS on Fargate 與 AWS Distro for 整合 OpenTelemetry ,將應用程式指標傳送至 Amazon Managed Service for Prometheus 時,應考慮下列事項。

  • Amazon ECS執行個體上託管於 Fargate 上的 Amazon 工作負載和託管於 Amazon EC2執行個體上的 Amazon ECS工作負載支援用於 OpenTelemetry 整合的 AWS Distro。目前不支援外部執行個體。

  • 根據預設, AWS Distro for OpenTelemetry 會在匯出至 Amazon Managed Service for Prometheus 時包含應用程式指標的所有可用任務層級維度。您還可以檢測應用程式以增加其他維度。如需詳細資訊,請參閱 AWS Distro 中的適用於 Amazon Managed Service for Prometheus 的 Prometheus 遠端寫入匯出器入門以取得 OpenTelemetry 文件。

AWS Distro 與 Amazon Managed Service for Prometheus OpenTelemetry 整合所需的IAM許可

使用 AWS Distro for sidecar 與 Amazon Managed Service for OpenTelemetry Prometheus ECS整合時,您需要建立任務IAM角色,並在任務定義中指定角色。在註冊任務定義之前,必須使用下列步驟手動建立此任務IAM角色。

建議您也將 AWS Distro for OpenTelemetry Sidecar 設定為將容器日誌路由至 Logs,而該 CloudWatch 日誌也需要在您的任務定義中建立和指定任務執行IAM角色。Amazon ECS主控台會代表您處理任務執行IAM角色,但任務IAM角色必須手動建立。如需建立任務執行IAM角色的詳細資訊,請參閱 Amazon ECS任務執行IAM角色

重要

如果您也使用 AWS Distro 收集應用程式追蹤資料以進行 OpenTelemetry 整合,請確定您的任務IAM角色也包含該整合所需的許可。如需詳細資訊,請參閱使用應用程式追蹤資料識別 Amazon ECS最佳化機會

建立 Elastic Container Service 的服務角色 (IAM 主控台)
  1. 登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/

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

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

  4. 針對服務或使用案例 ,選擇彈性容器服務 ,然後選擇彈性容器服務任務使用案例。

  5. 選擇 Next (下一步)

  6. 新增許可區段中,搜尋 AmazonPrometheusRemoteWriteAccess,然後選擇政策。

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

    1. 開啟設定許可界限區段,然後選擇使用許可界限來控制最大角色許可

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

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

  8. 選擇 Next (下一步)

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

    重要

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

    • 角色名稱在您的 中必須是唯一的 AWS 帳戶,且無法依大小寫設為唯一。

      例如,請勿建立名為 PRODROLE和 的角色prodrole。當角色名稱用於政策或 的一部分時ARN,角色名稱區分大小寫,但是當角色名稱出現在主控台中的客戶時,例如在登入過程中,角色名稱區分大小寫。

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

  10. (選用) 針對描述 ,輸入角色的描述。

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

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

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

在任務定義中指定 OpenTelemetry Sidecar AWS 的 Distro

Amazon ECS主控台使用使用指標收集選項,簡化建立 Distro for OpenTelemetry sidecar AWS 容器的體驗。如需詳細資訊,請參閱使用主控台建立 Amazon ECS任務定義

如果您不是使用 Amazon ECS主控台,則可以手動將 Distro for OpenTelemetry Sidecar AWS 容器新增至任務定義。下列任務定義範例顯示為 Amazon Managed Service for Prometheus 整合新增 OpenTelemetry Sidecar AWS 的 Distro 的容器定義。

{ "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" }