將應用程式指標匯出至 Amazon CloudWatch
Fargate 上的 Amazon ECS 支援將您的自訂應用程式指標匯出到 Amazon CloudWatch 作為自訂指標。這透過將 AWS Distro for OpenTelemetry 附屬容器新增至您的任務定義來實現。Amazon ECS 主控台透過在建立新任務定義時新增使用指標收集選項來簡化此流程。如需更多詳細資訊,請參閱 使用主控台建立 Amazon ECS 任務定義。
將應用程式指標匯出至有日誌群組名稱 /aws/ecs/application/metrics 的 CloudWatch Logs,並且您可以在 ECS/AWSOTel/Application 命名空間中查看指標。您的應用程式必須使用 OpenTelemetry SDK 進行檢測。如需詳細資訊,請參閱 AWS Distro for OpenTelemetry 文件中的 AWS Distro for OpenTelemetry 簡介
考量事項
在使用 Fargate 上的 Amazon ECS 與 AWS Distro for OpenTelemetry 整合時,應考慮以下事項,以將應用程式指標傳送至 Amazon CloudWatch。
-
此整合只會將您的自訂應用程式指標傳送至 CloudWatch。如果需要任務層級指標,可以在 Amazon ECS 叢集組態中開啟 Container Insights。如需更多詳細資訊,請參閱 使用具有增強可觀測性的 Container Insights 監控 Amazon ECS。
-
只有託管在 Fargate 上的 Amazon ECS 工作負載和託管在 Amazon EC2 執行個體上的 Amazon ECS 工作負載支援 AWS Distro for OpenTelemetry 整合。目前不支援外部執行個體。
-
CloudWatch 支援每個指標最多 30 個維度。預設情況下,Amazon ECS 預設為指標中包含
TaskARN、ClusterARN、LaunchType、TaskDefinitionFamily,以及TaskDefinitionRevision維度。其餘 25 個維度可由您的應用程式定義。如果設定的維度超過 30 個,則 CloudWatch 將無法顯示它們。發生這種情況時,應用程式指標會顯示在ECS/AWSOTel/ApplicationCloudWatch 指標命名空間,但沒有任何維度。您可以檢測應用程式以增加其他維度。如需詳細資訊,請參閱 AWS Distro for OpenTelemetry 文件中的 將 AWS Distro for OpenTelemetry 與 CloudWatch 指標搭配使用。
AWS Distro for OpenTelemetry 與 Amazon CloudWatch 整合所需的 IAM 許可
Amazon ECS 與 AWS Distro for OpenTelemetry 進行整合,需要您建立任務 IAM 角色,並在任務定義中指定該角色。建議將 AWS Distro for OpenTelemetry 附屬也設定為將容器日誌路由到 CloudWatch Logs,這也需要在任務定義中建立和指定任務執行 IAM 角色。Amazon ECS 主控台會代表您負責處理任務執行 IAM 角色,但任務 IAM 角色必須手動建立並新增至任務定義。如需有關任務執行 IAM 角色的詳細資訊,請參閱 Amazon ECS 任務執行 IAM 角色。
重要
如果您還使用 AWS Distro for OpenTelemetry 收集應用程式追蹤資料,請確保您的任務 IAM 角色也包含該整合所需的權限許可。如需更多詳細資訊,請參閱 使用應用程式追蹤資料識別 Amazon ECS 最佳化機會。
如果您的應用程式需要任何其他許可,則應將其新增到此政策中。每個任務定義只能指定一個任務 IAM 角色。例如,如果您使用儲存在 Systems Manager 中的自訂組態檔案,則應將 ssm:GetParameters 許可新增至此 IAM 政策。
建立 Elastic Container Service 的服務角色 (IAM 主控台)
登入 AWS Management Console,並前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在 IAM 主控台的導覽窗格中,選擇角色,然後選擇建立角色。
-
對於 Trusted entity type (信任的實體類型),請選擇 AWS 服務。
-
在服務或使用案例欄位中選擇 Elastic Container Service,然後選擇 Elastic Container Service 任務使用案例。
-
選擇下一步。
-
在新增許可區段中,搜尋並選取 AWSDistroOpenTelemetryPolicyForXray 政策。
-
(選用) 設定許可界限。這是進階功能,可用於服務角色,而不是服務連結的角色。
-
開啟設定許可界限區段,然後選擇使用許可界限來控制角色許可上限。
IAM 包含您帳戶中的 AWS 受管和客戶管理政策清單。
選取用於許可界限的政策。
-
-
選擇下一步。
-
輸入角色名稱或角色名稱字尾,協助識別該角色的用途。
重要
當您命名角色時,請注意下列事項:
-
角色名稱在您的 AWS 帳戶中必須是唯一的,且不能是因為大小寫而成為唯一。
例如,不要同時建立名為
PRODROLE和prodrole的角色。當角色名稱用於政策或 ARN 的一部分時,角色名稱會區分大小寫,但是當角色名稱在主控台中顯示給客戶時,例如在登入過程中,角色名稱不會區分大小寫。 -
因為其他實體可能會參考角色,所以在建立角色之後,就無法編輯其名稱。
-
-
(選用) 在說明中,輸入角色的說明。
-
(選用) 若要編輯使用案例和角色許可,請在步驟 1:選取受信任的實體或者步驟 2:新增許可區段中選擇編輯。
-
(選用) 若要協助識別、組織或搜尋角色,請將標籤新增為索引鍵值對。如需使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的 Tags for AWS Identity and Access Management resources。
-
檢閱角色,然後選擇 Create role (建立角色)。
指定您任務定義中的 AWS Distro for OpenTelemetry 附屬
Amazon ECS 主控台透過使用指標收集選項,簡化了建立 AWS Distro for OpenTelemetry 邊車容器的體驗。如需更多詳細資訊,請參閱 使用主控台建立 Amazon ECS 任務定義。
如果您沒有使用 Amazon ECS 主控台,可以將 AWS Distro for OpenTelemetry 附屬容器手動新增至您的任務定義。以下任務定義代碼範例顯示了容器定義,用於新增 AWS Distro for OpenTelemetry 以進行 Amazon CloudWatch 整合。
{ "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": "us-east-1", "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-cloudwatch.yaml" ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }