在 Amazon 叢集上安裝具有 Prometheus 指標集合的 CloudWatch 代理程式 ECS - Amazon CloudWatch

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

在 Amazon 叢集上安裝具有 Prometheus 指標集合的 CloudWatch 代理程式 ECS

本節說明如何在執行 Amazon 的叢集中使用 Prometheus 監控來設定 CloudWatch 代理程式。ECS執行這項操作之後,代理程式會自動湊集和匯入該叢集中執行的下列工作負載的指標。

  • AWS App Mesh

  • 爪哇/JMX

您也可以設定代理程式,以從其他 Prometheus 工作負載和來源湊集和匯入指標。

設定IAM角色

CloudWatch 代理程式工作定義需要兩個IAM角色。如果您CreateIAMRoles=True在 AWS CloudFormation 堆疊中指定讓 Container Insights 為您建立這些角色,則會以正確的權限建立角色。如果您想要自行建立或使用現有角色,則需要下列角色和許可。

  • CloudWatch 代理程式ECS工作角色 — CloudWatch 代理程式容器使用此角色。它必須包含CloudWatchAgentServerPolicy策略和客戶管理的策略,其中包含以下唯讀權限:

    • ec2:DescribeInstances

    • ecs:ListTasks

    • ecs:ListServices

    • ecs:DescribeContainerInstances

    • ecs:DescribeServices

    • ecs:DescribeTasks

    • ecs:DescribeTaskDefinition

  • CloudWatch 代理程式ECS任務執行角色 — 這是 Amazon 啟動和執行容器所ECS需的角色。請確定您的工作執行角色已附加 A mazonSSMRead OnlyAccess mazonECSTask ExecutionRolePolicy、ACloudWatchAgentServerPolicy原則。如果您想要存放更敏感的資料供 Amazon 使ECS用,請參閱指定敏感資料

使用以下方 CloudWatch 式安裝具有 Prometheus 監視的代理程式 AWS CloudFormation

您可 AWS CloudFormation 以使用針對 Amazon 叢集安裝具有 Prometheus 監控的 CloudWatch 代理程式。ECS下列清單顯示了您將在 AWS CloudFormation 範本中使用的參數。

  • ECSClusterName— 指定目標 Amazon ECS 叢集。

  • C reateIAMRoles — 指定True為 Amazon 任務角色和 Amazon ECS ECS 任務執行角色建立新角色。指定 False 以重複使用現有角色。

  • TaskRoleName— 如果您TrueC 指定reateIAMRoles,則會指定用於新 Amazon ECS 任務角色的名稱。如果您FalseC 指定reateIAMRoles,則指定要用作 Amazon ECS 任務角色的現有角色。

  • ExecutionRoleName— 如果您TrueC 指定reateIAMRoles,則會指定用於新 Amazon ECS 任務執行角色的名稱。如果您FalseC 指定reateIAMRoles,則指定要用作 Amazon ECS 任務執行角色的現有角色。

  • ECSNetworkMode— 如果您使用EC2啟動類型,請在此處指定網路模式。其必須為 bridgehost

  • ECSLaunchType— 指定fargateEC2

  • SecurityGroupID — 如果ECSNetworkModeawsvpc,請在此處指定安全群組 ID。

  • SubNetId — 如果ECSNetworkModeawsvpc,請在此處指定子網路識別碼。

命令範例

本節包括在各種情況下使用 Prometheus 監視來安裝容器見解的範例 AWS CloudFormation 命令。

在橋接網路模式下為 Amazon ECS 叢集建立 AWS CloudFormation 堆疊

export AWS_PROFILE=your_aws_config_profile_eg_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_NETWORK_MODE=bridge export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}

在主機網路模式下為 Amazon ECS 叢集建立 AWS CloudFormation 堆疊

export AWS_PROFILE=your_aws_config_profile_eg_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_NETWORK_MODE=host export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-bridge-host.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \ --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSNetworkMode,ParameterValue=${ECS_NETWORK_MODE} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}

在 awsvpc 網路模式下為 Amazon ECS 叢集建立 AWS CloudFormation 堆疊

export AWS_PROFILE=your_aws_config_profile_eg_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_LAUNCH_TYPE=EC2 export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \ --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \ ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \ ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}

在 awsvpc 網絡模式下為 Fargate 集群創建 AWS CloudFormation 堆棧

export AWS_PROFILE=your_aws_config_profile_eg_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_name export ECS_LAUNCH_TYPE=FARGATE export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxx export ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxx export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_name export ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_name curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-${ECS_LAUNCH_TYPE}-awsvpc \ --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \ --parameters ParameterKey=ECSClusterName,ParameterValue=${ECS_CLUSTER_NAME} \ ParameterKey=CreateIAMRoles,ParameterValue=${CREATE_IAM_ROLES} \ ParameterKey=ECSLaunchType,ParameterValue=${ECS_LAUNCH_TYPE} \ ParameterKey=SecurityGroupID,ParameterValue=${ECS_CLUSTER_SECURITY_GROUP} \ ParameterKey=SubnetID,ParameterValue=${ECS_CLUSTER_SUBNET} \ ParameterKey=TaskRoleName,ParameterValue=${ECS_TASK_ROLE_NAME} \ ParameterKey=ExecutionRoleName,ParameterValue=${ECS_EXECUTION_ROLE_NAME} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}

AWS 由 AWS CloudFormation 堆棧創建的資源

下表列出當您在 Amazon 叢集上使用 AWS CloudFormation Prometheus 監控設定容器洞見時所建立的 AWS 資源。ECS

資源類型 資源名稱 說明

AWS:::SSM: 參數

AmazonCloudWatch-CWAgentConfig-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

這是具有預設應用程式網格和 Java/ JMX 內嵌度量格式定義的 CloudWatch 代理程式。

AWS:::SSM: 參數

AmazonCloudWatch-PrometheusConfigName-$ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

這是 Prometheus 湊集組態。

AWS:::IAM: 角色

$ECS_TASK_ROLE_NAME.

Amazon ECS 任務角色。這僅在您為 CREATE_IAM_ROLES 指定 True 時建立。

AWS:::IAM: 角色

${ECS_EXECUTION_ROLE_NAME}

Amazon ECS 任務執行角色。這僅在您為 CREATE_IAM_ROLES 指定 True 時建立。

AWS::ECS::TaskDefinition

cwagent-普羅米修斯 $ECS_CLUSTER_NAME-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

AWS:::ECS: 服務項目

cwagent-prometheus-replica-service-$ECS_LAUNCH_TYPE-$ECS_NETWORK_MODE

使用 Prometheus 監視刪除 CloudWatch 代理程式的 AWS CloudFormation 堆疊

若要從 Amazon ECS 叢集刪除 CloudWatch 代理程式,請輸入以下命令。

export AWS_PROFILE=your_aws_config_profile_eg_default export AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1 export CLOUDFORMATION_STACK_NAME=your_cloudformation_stack_name aws cloudformation delete-stack \ --stack-name ${CLOUDFORMATION_STACK_NAME} \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}