將應用程式指標匯出至 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 程式庫或 進行檢測 OpenTelemetry SDK。如需使用 檢測應用程式的詳細資訊 OpenTelemetry SDK,請參閱 Distro 中的 AWS Distro for 簡介 OpenTelemetry以取得 OpenTelemetry 文件。 AWS

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

考量事項

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

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

  • 根據預設, AWS Distro for OpenTelemetry 會在匯出至 Amazon Managed Service for Prometheus 時包含應用程式指標的所有可用任務層級維度。您還可以檢測應用程式以增加其他維度。如需詳細資訊,請參閱 AWS Distro 中的 Prometheus Remote Write Exporter for Amazon Managed Service for 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,將容器日誌路由到需要在您的任務定義中建立和指定任務執行IAM角色的 CloudWatch 日誌。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 主控台的導覽窗格中,選擇 Roles (角色),然後選擇 Create role (建立角色)

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

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

  5. 選擇 Next (下一步)

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

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

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

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

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

  8. 選擇 Next (下一步)

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

    重要

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

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

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

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

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

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

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

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

在任務定義中指定 OpenTelemetry 附屬的 AWS Distro

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

如果您不是使用 Amazon ECS主控台,則可以手動將 Distro for OpenTelemetry Sidecar AWS 容器新增至任務定義。下列任務定義範例顯示為 Amazon Managed Service for Prometheus 整合新增 OpenTelemetry 附屬 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" }