本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將應用程式指標匯出至 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
使用 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 主控台)
登入 AWS Management Console 並在 開啟IAM主控台https://console.aws.amazon.com/iam/
。 -
在IAM主控台的導覽窗格中,選擇角色 ,然後選擇建立角色 。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
針對服務或使用案例 ,選擇彈性容器服務 ,然後選擇彈性容器服務任務使用案例。
-
選擇 Next (下一步)。
-
在新增許可區段中,搜尋 AmazonPrometheusRemoteWriteAccess,然後選擇政策。
-
(選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。
-
開啟設定許可界限區段,然後選擇使用許可界限來控制最大角色許可 。
IAM 包含您帳戶中受 AWS 管和客戶受管政策的清單。
選取用於許可界限的政策。
-
-
選擇 Next (下一步)。
-
輸入角色名稱或角色名稱尾碼,以協助您識別角色的目的。
重要
當您命名角色時,請注意下列事項:
-
角色名稱在您的 中必須是唯一的 AWS 帳戶,且無法依大小寫設為唯一。
例如,請勿建立名為
PRODROLE
和 的角色prodrole
。當角色名稱用於政策或 的一部分時ARN,角色名稱區分大小寫,但是當角色名稱出現在主控台中的客戶時,例如在登入過程中,角色名稱區分大小寫。 -
您無法在建立角色之後編輯角色的名稱,因為其他實體可能會參考角色。
-
-
(選用) 針對描述 ,輸入角色的描述。
-
(選用) 若要編輯角色的使用案例和許可,請在步驟 1:選取信任的實體或步驟 2:新增許可區段中,選擇編輯 。
-
(選用) 若要協助識別、組織或搜尋角色,請將標籤新增為鍵值對。如需在 中使用標籤的詳細資訊IAM,請參閱 IAM 使用者指南 中的標記IAM資源。
-
檢閱角色,然後選擇 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" }