Installation de l'agent CloudWatch avec la collecte de métriques Prometheus sur des clusters Amazon ECS
Cette section explique comment configurer l'agent CloudWatch avec surveillance Prometheus dans un cluster exécutant Amazon ECS. Après cela, l'agent récupère et importe automatiquement les métriques pour les applications suivantes exécutées dans ce cluster.
-
AWS App Mesh
-
Java/JMX
Vous pouvez également configurer l'agent pour récupérer et importer les métriques à partir d'applications et sources Prometheus supplémentaires.
Configuration de rôles IAM
Vous avez besoin de deux rôles IAM pour la définition de tâche de l'agent CloudWatch. Si vous spécifiez CreateIAMRoles=True dans la pile CloudFormation pour que Container Insights crée ces rôles pour vous, les rôles seront créés avec les bonnes autorisations. Si vous souhaitez les créer vous-même ou utiliser des rôles existants, les autorisations et rôles suivants sont requis.
-
Rôle de tâche ECS de l'agent CloudWatch– Le conteneur de l'agent CloudWatch utilise ce rôle. Il doit inclure la politique CloudWatchAgentServerPolicy et une politique gérée par le client qui contient les autorisations en lecture seule suivantes :
-
ec2:DescribeInstances -
ecs:ListTasks -
ecs:ListServices -
ecs:DescribeContainerInstances -
ecs:DescribeServices -
ecs:DescribeTasks -
ecs:DescribeTaskDefinition
-
-
Rôle d'exécution de tâche ECS d'agent CloudWatch– Il s'agit du rôle dont Amazon ECS a besoin pour lancer et exécuter vos conteneurs. Assurez-vous que les politiques AmazonSSMReadOnlyAccess, AmazonECSTaskExecutionRolePolicy, et CloudWatchAgentServerPolicy sont attachées à votre rôle d'exécution de tâche. Si vous souhaitez stocker des données plus sensibles que Amazon ECS peut utiliser, consultez Spécification de données sensibles.
Installation de l'agent CloudWatch avec la surveillance Prometheus à l'aide de CloudFormation
Vous utilisez AWS CloudFormation pour installer l'agent CloudWatch avec la surveillance Prometheus pour les clusters Amazon ECS. La liste suivante montre les paramètres que vous utiliserez dans le modèle CloudFormation.
-
ECSClusterName– Spécifie le cluster Amazon ECS cible.
-
CreateIAMRoles– Spécifiez
Truepour créer de nouveaux rôles pour le rôle de tâche Amazon ECS et le rôle d'exécution de tâche Amazon ECS. SpécifiezFalsepour réutiliser les rôles existants. -
TaskRoleName– Si vous avez spécifié
Truepour CreateIAMRoles, cela spécifie le nom à utiliser pour le nouveau rôle de tâche Amazon ECS. Si vous avez spécifiéFalsepour CreateIAMRoles, cela spécifie le rôle existant à utiliser en tant que rôle de tâche Amazon ECS. -
ExecutionRoleName– Si vous avez spécifié
Truepour CreateIAMRoles, cela spécifie le nom à utiliser pour le nouveau rôle d'exécution de tâche Amazon ECS. Si vous avez spécifiéFalsepour CreateIAMRoles, cela spécifie le rôle existant à utiliser en tant que rôle d'exécution de tâche Amazon ECS. -
ECSNetworkMode– Si vous utilisez le type de lancement EC2, spécifiez le mode réseau ici. Il doit être
bridgeouhost. -
ECSLaunchType– Spécifie
fargateouEC2. -
SecurityGroupID– Si le ECSNetworkMode est
awsvpc, spécifiez ici l'ID du groupe de sécurité. -
SubnetID– Si le ECSNetworkMode est
awsvpc, spécifiez ici l'ID du sous-réseau.
Exemples de commande
Cette section présente des exemples de commandes CloudFormation pour installer Container Insights avec la surveillance Prometheus dans différents scénarios.
Créer une pile CloudFormation pour un cluster Amazon ECS en mode réseau pont
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}
Créer une pile CloudFormation pour un cluster Amazon ECS en mode réseau hôte
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}
Créer une pile CloudFormation pour un cluster Amazon ECS en mode réseau awsvpc
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}
Créer une pile CloudFormation pour un cluster Fargate en mode réseau awsvpc
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}
Ressources AWS créées par la pile CloudFormation
Le tableau suivant répertorie les ressources AWS qui sont créées lorsque vous utilisez CloudFormation pour configurer Container Insights avec la surveillance Prometheus sur un cluster Amazon ECS.
| Type de ressource | Nom de la ressource | Commentaires |
|---|---|---|
|
AWS::SSM::Parameter |
AmazonCloudWatch-CWAgentConfig-$ |
Il s'agit de l'agent CloudWatch avec la définition de format de métrique intégrée App Mesh et Java/JMX par défaut. |
|
AWS::SSM::Parameter |
AmazonCloudWatch-PrometheusConfigName-$ |
Il s'agit de la configuration de récupération Prometheus. |
|
AWS::IAM::Role |
$ECS_TASK_ROLE_NAME. |
Le rôle de tâche Amazon ECS. Ceci est créé uniquement si vous avez spécifié |
|
AWS::IAM::Role |
${ECS_EXECUTION_ROLE_NAME} |
Le rôle d'exécution de tâche Amazon ECS. Ceci est créé uniquement si vous avez spécifié |
|
AWS::ECS::TaskDefinition |
cwagent-prometheus-$ |
|
|
AWS::ECS::Service |
cwagent-prometheus-replica-service-$ |
Suppression de la pile CloudFormation pour l'agent CloudWatch avec surveillance Prometheus
Pour supprimer l'agent CloudWatch d'un cluster Amazon ECS, saisissez ces commandes.
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}