Installieren des CloudWatch-Agenten mit Prometheus-Metrikensammlung in Amazon-ECS-Clustern
In diesem Abschnitt wird erklärt, wie Sie den CloudWatch-Agenten mit Prometheus-Überwachung in einem Cluster einrichten können, auf dem Amazon ECS ausgeführt wird. Danach scrapt und importiert der Agent automatisch Metriken für die folgenden Workloads, die in diesem Cluster ausgeführt werden.
-
AWS App Mesh
-
Java/JMX
Sie können den Agenten auch so konfigurieren, dass er Metriken aus weiteren Prometheus-Workloads und -Quellen importiert.
Einrichten von IAM-Rollen
Sie benötigen zwei IAM-Rollen für die Aufgabendefinition des CloudWatch-Agenten. Wenn Sie CreateIAMRoles=True im CloudFormation-Stack angeben, damit Container Insights diese Rollen für Sie erstellt, werden die Rollen mit den richtigen Berechtigungen erstellt. Wenn Sie sie selbst erstellen oder vorhandene Rollen verwenden möchten, sind die folgenden Rollen und Berechtigungen erforderlich.
-
ECS-Aufgabenrolle des CloudWatch-Agenten – Der CloudWatch-Agent-Container verwendet diese Rolle. Sie muss die CloudWatchAgentServerPolicy-Richtlinie und eine vom Kunden verwaltete Richtlinie enthalten, die die folgenden schreibgeschützten Berechtigungen enthält:
-
ec2:DescribeInstances -
ecs:ListTasks -
ecs:ListServices -
ecs:DescribeContainerInstances -
ecs:DescribeServices -
ecs:DescribeTasks -
ecs:DescribeTaskDefinition
-
-
ECS-Aufgabenausführungsrolle des CloudWatch-Agenten – Dies ist die Rolle, die Amazon ECS benötigt, um Ihre Container zu starten und auszuführen. Stellen Sie sicher, dass an Ihre Aufgabenausführungsrolle die Richtlinien AmazonSSMReadOnlyAccess, AmazonECSTaskExecutionRolePolicy und CloudWatchAgentServerPolicy angehängt sind. Wenn Sie sensiblere Daten zur Verwendung durch Amazon ECS speichern möchten, finden Sie weitere Informationen unter Angabe sensibler Daten.
Installieren Sie den CloudWatch-Agenten mit Prometheus-Überwachung mithilfe von CloudFormation
Sie verwenden AWS CloudFormation, um den CloudWatch-Agenten mit Prometheus-Überwachung für Amazon-ECS-Cluster zu installieren. Die folgende Liste zeigt die Parameter, die Sie in der CloudFormation-Vorlage verwenden werden.
-
ECSClusterName – Gibt den Amazon-ECS-Ziel-Cluster an.
-
CreateIamRollen – Geben Sie
Truean, um neue Rollen für die Amazon-ECS-Aufgabenrolle und die Amazon-ECS-Aufgabenausführungsrolle zu erstellen. Geben SieFalsean, um vorhandene Rollen wiederzuverwenden. -
TaskRoleName – Wenn Sie
Truefür CreateIAMRoles angegeben haben, gibt dies den Namen an, der für die neue Amazon-ECS-Aufgabenrolle verwendet werden soll. Wenn SieFalsefür CreateIAMRoles angegeben haben, gibt dies den Namen an, der für die neue Amazon-ECS-Aufgabenrolle verwendet werden soll. -
ExecutionRoleName – Wenn Sie
Truefür CreateIAMRoles angegeben haben, gibt dies den Namen an, der für die neue Amazon-ECS-Aufgabenausführungsrolle verwendet werden soll. Wenn SieFalsefür CreateIAMRoles angegeben haben, gibt dies den Namen an, der für die neue Amazon-ECS-Aufgabenausführungsrolle verwendet werden soll. -
ECSNetworkMode – Wenn Sie den EC2-Starttyp verwenden, geben Sie hier den Netzwerkmodus an. Es muss entweder
bridgeoderhostsein. -
ECSLaunchType – Geben Sie entweder
fargateoderEC2an. -
SecurityGroupId— Wenn ECSNetworkMode
awsvpcist, geben Sie hier die Sicherheitsgruppen-ID an. -
SubnetID – Wenn ECSNetworkMode
awsvpcist, geben Sie hier die Subnetz-ID an.
Befehlsbeispiele
Dieser Abschnitt enthält CloudFormation-Beispielbefehle zum Installieren von Container Insights mit Prometheus-Überwachung in verschiedenen Szenarien.
Erstellen eines CloudFormation-Stacks für einen Amazon-ECS-Cluster im Bridge-Netzwerkmodus
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_NETWORK_MODE=bridge export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -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}
Erstellen eines CloudFormation-Stacks für einen Amazon-ECS-Cluster im Host-Netzwerkmodus
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_NETWORK_MODE=host export CREATE_IAM_ROLES=True export ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -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}
Erstellen eines CloudFormation-Stacks für einen Amazon-ECS-Cluster im awsvpc-Netzwerkmodus
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_LAUNCH_TYPE=EC2 export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxxexport ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxxexport ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -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}
Erstellen eines CloudFormation-Stacks für einen Fargate-Cluster im awsvpc-Netzwerkmodus
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export ECS_CLUSTER_NAME=your_ec2_ecs_cluster_nameexport ECS_LAUNCH_TYPE=FARGATE export CREATE_IAM_ROLES=True export ECS_CLUSTER_SECURITY_GROUP=your_security_group_eg_sg-xxxxxxxxxxexport ECS_CLUSTER_SUBNET=your_subnet_eg_subnet-xxxxxxxxxxexport ECS_TASK_ROLE_NAME=your_selected_ecs_task_role_nameexport ECS_EXECUTION_ROLE_NAME=your_selected_ecs_execution_role_namecurl -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-Ressourcen, die vom CloudFormation-Stack erstellt werden
In der folgenden Tabelle sind die AWS-Ressourcen aufgeführt, die erstellt werden, wenn Sie CloudFormation verwenden, um Container Insights mit Prometheus-Überwachung auf einem Amazon-ECS-Cluster einzurichten.
| Resource type (Ressourcentyp) | Ressourcenname | Kommentare |
|---|---|---|
|
AWS::SSM::Parameter |
AmazonCloudWatch-CWAgentConfig-$ |
Dies ist der CloudWatch-Agent mit der standardmäßigen Definition des App-Mesh- und Java/JMX-eingebetteten Metrikformats. |
|
AWS::SSM::Parameter |
AmazonCloudWatch-PrometheusConfigName-$ |
Dies ist die Prometheus-Scraping-Konfiguration. |
|
AWS::IAM::Role |
$ECS_TASK_ROLE_NAME. |
Die Amazon-ECS-Aufgabenrolle. Dies wird nur erstellt, wenn Sie |
|
AWS::IAM::Role |
${ECS_EXECUTION_ROLE_NAME} |
IAM-Rolle für die Amazon-ECS-Aufgabenausführung Dies wird nur erstellt, wenn Sie |
|
AWS::ECS::TaskDefinition |
cwagent-prometheus-$ |
|
|
AWS::ECS::Service |
cwagent-prometheus-replica-service-$ |
Löschen des CloudFormation-Stack für den CloudWatch-Agenten mit Prometheus-Überwachung
Geben Sie diese Befehle ein, um den CloudWatch-Agenten aus einem Amazon-ECS-Cluster zu löschen.
export AWS_PROFILE=your_aws_config_profile_eg_defaultexport AWS_DEFAULT_REGION=your_aws_region_eg_ap-southeast-1export CLOUDFORMATION_STACK_NAME=your_cloudformation_stack_nameaws cloudformation delete-stack \ --stack-name ${CLOUDFORMATION_STACK_NAME} \ --region ${AWS_DEFAULT_REGION} \ --profile ${AWS_PROFILE}