本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 支援將您的任務層級 CPU、記憶體、網路和儲存指標,以及自訂應用程式指標匯出至 Amazon Managed Service for Prometheus。方法是將 AWS Distro for OpenTelemetry 附屬容器新增至您的任務定義。Amazon ECS 主控台會在建立新的任務定義時新增使用指標集合選項,以簡化此程序。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義。
這些指標將匯出至 Amazon Managed Service for Prometheus,並可以使用 Amazon Managed Grafana 儀表板查看。您必須使用 Prometheus 程式庫或 OpenTelemetry SDK 檢測應用程式。如需使用 OpenTelemetry SDK 檢測應用程式的詳細資訊,請參閱 AWS Distro for OpenTelemetry 文件
使用 Prometheus 程式庫時,您的應用程式必須公開 /metrics
端點,用於抓取指標資料。如需有關使用 Prometheus 程式庫檢測應用程式的詳細資訊,請參閱 Prometheus 文件中的 Prometheus 用戶端程式庫
考量事項
使用 Amazon ECS on Fargate 與 AWS Distro for OpenTelemetry 整合,將應用程式指標傳送至 Amazon Managed Service for Prometheus 時,應考慮下列事項。
-
Amazon EC2 執行個體上託管於 Fargate 上的 AWS Amazon ECS 工作負載和託管於 Amazon EC2 執行個體上的 Amazon ECS 工作負載支援 Distro for OpenTelemetry 整合。目前不支援外部執行個體。
-
根據預設, AWS Distro for OpenTelemetry 會在匯出至 Amazon Managed Service for Prometheus 時包含應用程式指標的所有可用任務層級維度。您還可以檢測應用程式以增加其他維度。如需詳細資訊,請參閱 Distro for OpenTelemetry 文件中的適用於 Amazon Managed Service for Prometheus 的 Prometheus 遠端寫入匯出器入門
。 AWS
AWS Distro for OpenTelemetry 與 Amazon Managed Service for Prometheus 整合所需的 IAM 許可
使用 AWS Distro for OpenTelemetry 附屬工具的 Amazon ECS 與 Amazon Managed Service for Prometheus 整合需要您建立任務 IAM 角色,並在任務定義中指定角色。註冊任務定義之前,必須使用以下步驟手動建立此任務 IAM 角色。
我們建議您也將 AWS Distro for OpenTelemetry 附屬項目設定為將容器日誌路由至 CloudWatch Logs,該日誌也需要在任務定義中建立和指定任務執行 IAM 角色。Amazon ECS 主控台會代表您處理任務執行 IAM 角色,但任務 IAM 角色必須手動建立。如需有關為任務建立 IAM 角色的詳細資訊,請參閱 Amazon ECS 任務執行 IAM 角色。
重要
如果您也使用 AWS Distro for OpenTelemetry 整合收集應用程式追蹤資料,請確定您的任務 IAM 角色也包含該整合所需的許可。如需詳細資訊,請參閱使用應用程式追蹤資料識別 Amazon ECS 最佳化機會。
建立 Elastic Container Service (IAM 主控台) 的服務角色
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
針對服務或使用案例,選擇彈性容器服務,然後選擇彈性容器服務任務使用案例。
-
選擇 Next (下一步)。
-
在新增許可區段中,搜尋 AmazonPrometheusRemoteWriteAccess,然後選取政策。
-
(選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。
-
開啟設定許可界限區段,然後選擇使用許可界限來控制角色許可上限。
IAM 包含您帳戶中 AWS 受管和客戶受管政策的清單。
選取用於許可界限的政策。
-
-
選擇 Next (下一步)。
-
輸入角色名稱或角色名稱尾碼,以協助您識別角色的目的。
重要
當您命名角色時,請注意下列事項:
-
角色名稱在您的 中必須是唯一的 AWS 帳戶,而且無法依大小寫設為唯一的。
例如,不要同時建立名為
PRODROLE
和prodrole
的角色。當角色名稱用於政策或 ARN 的一部分時,角色名稱會區分大小寫,但是當角色名稱在主控台中顯示給客戶時,例如在登入過程中,角色名稱不會區分大小寫。 -
因為其他實體可能會參考角色,所以在建立角色之後,就無法編輯其名稱。
-
-
(選用) 在說明中,輸入角色的說明。
-
(選用) 若要編輯使用案例和角色許可,請在步驟 1:選取受信任的實體或者步驟 2:新增許可區段中選擇編輯。
-
(選用) 若要協助識別、組織或搜尋角色,請將標籤新增為索引鍵值對。如需在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的AWS Identity and Access Management 資源的標籤。
-
檢閱角色,然後選擇 Create role (建立角色)。
指定您任務定義中的 AWS Distro for OpenTelemetry 附屬
Amazon ECS 主控台使用使用指標收集選項,簡化建立 AWS Distro for OpenTelemetry 附屬容器的體驗。如需詳細資訊,請參閱使用主控台建立 Amazon ECS 任務定義。
如果您不是使用 Amazon ECS 主控台,則可以手動將 AWS Distro for OpenTelemetry 附屬容器新增至任務定義。下列任務定義範例顯示為 Amazon Managed Service for Prometheus 整合新增 AWS Distro for OpenTelemetry 附屬項目的容器定義。
{
"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"
}