本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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、A 和CloudWatchAgentServerPolicy原則。如果您想要存放更敏感的資料供 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— 如果您
True
為 C 指定reateIAMRoles,則會指定用於新 Amazon ECS 任務角色的名稱。如果您False
為 C 指定reateIAMRoles,則指定要用作 Amazon ECS 任務角色的現有角色。 -
ExecutionRoleName— 如果您
True
為 C 指定reateIAMRoles,則會指定用於新 Amazon ECS 任務執行角色的名稱。如果您False
為 C 指定reateIAMRoles,則指定要用作 Amazon ECS 任務執行角色的現有角色。 -
ECSNetworkMode— 如果您使用EC2啟動類型,請在此處指定網路模式。其必須為
bridge
或host
。 -
ECSLaunchType— 指定
fargate
或EC2
。 -
SecurityGroupID — 如果ECSNetworkMode是
awsvpc
,請在此處指定安全群組 ID。 -
SubNetId — 如果ECSNetworkMode是
awsvpc
,請在此處指定子網路識別碼。
命令範例
本節包括在各種情況下使用 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-$ |
這是具有預設應用程式網格和 Java/ JMX 內嵌度量格式定義的 CloudWatch 代理程式。 |
AWS:::SSM: 參數 |
AmazonCloudWatch-PrometheusConfigName-$ |
這是 Prometheus 湊集組態。 |
AWS:::IAM: 角色 |
$ECS_TASK_ROLE_NAME. |
Amazon ECS 任務角色。這僅在您為 |
AWS:::IAM: 角色 |
${ECS_EXECUTION_ROLE_NAME} |
Amazon ECS 任務執行角色。這僅在您為 |
AWS::ECS::TaskDefinition |
cwagent-普羅米修斯 $ |
|
AWS:::ECS: 服務項目 |
cwagent-prometheus-replica-service-$ |
使用 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}