Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déploiement de l' CloudWatch agent pour collecter des métriques EC2 au niveau de l'instance sur Amazon ECS
Pour déployer l' CloudWatch agent afin de collecter des métriques au niveau de l'instance à partir de clusters Amazon ECS hébergés sur EC2 instance, utilisez une configuration de démarrage rapide avec une configuration par défaut ou installez l'agent manuellement pour pouvoir le personnaliser.
Les deux méthodes nécessitent que vous ayez déjà déployé au moins un cluster Amazon ECS avec un type de EC2 lancement et que le conteneur de l' CloudWatch agent ait accès au Amazon EC2 Instance Metadata Service (IMDS). Pour plus d'informations sur IMDS, consultez Métadonnées d'instance et données utilisateur.
Ces méthodes supposent également que vous avez AWS CLI installé le. En outre, pour exécuter les commandes décrites dans les procédures suivantes, vous devez être connecté à un compte ou à un rôle soumis aux politiques IAMFullAccess et AmazonECS_ FullAccess.
Configuration rapide à l'aide de AWS CloudFormation
Pour utiliser la configuration rapide, entrez la commande suivante à utiliser AWS CloudFormation pour installer l'agent. Remplacez cluster-name
et cluster-region
par le nom et la région de votre cluster Amazon ECS.
Cette commande crée les rôles Role et CWAgentECSTaskCWAgentECSExecutionRole IAM. Si ces rôles existent déjà dans votre compte, utilisez ParameterKey=CreateIAMRoles,ParameterValue=False
plutôt que ParameterKey=CreateIAMRoles,ParameterValue=True
lorsque vous entrez la commande. Sinon, la commande échouera.
ClusterName=
cluster-name
Region=cluster-region
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=CreateIAMRoles,ParameterValue=True \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
(Alternative) Utilisation de vos propres rôles IAM
Si vous souhaitez utiliser votre propre rôle de tâche ECS personnalisé et votre rôle d'exécution de tâche ECS au lieu des rôles CWAgentECSTaskCWAgentECSExecutionRôle et Rôle, assurez-vous d'abord que le rôle à utiliser en tant que rôle de tâche ECS est CloudWatchAgentServerPolicyattaché. Assurez-vous également que le rôle à utiliser comme rôle d'exécution de tâches ECS est associé à la fois aux ECSTask ExecutionRolePolicy politiques Amazon CloudWatchAgentServerPolicyet aux politiques Amazon. Entrez ensuite la commande suivante. Dans la commande, remplacez task-role-arn
par l'ARN de votre rôle de tâche ECS personnalisé et remplacez execution-role-arn
par l'ARN de votre rôle d'exécution de tâche ECS personnalisé.
ClusterName=
cluster-name
Region=cluster-region
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=TaskRoleArn,ParameterValue=${TaskRoleArn} \ ParameterKey=ExecutionRoleArn,ParameterValue=${ExecutionRoleArn} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
Dépannage de la configuration rapide
Pour vérifier l'état de la AWS CloudFormation pile, entrez la commande suivante.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Si le StackStatus
ne correspond pas à CREATE_COMPLETE
ou CREATE_IN_PROGRESS
, vérifiez les événements de la pile pour trouver l'erreur. Entrez la commande suivante.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Pour vérifier l'état du service de démon cwagent
, saisissez la commande suivante. Dans la sortie, vous devriez voir que runningCount
est égal à desiredCount
dans la section deployment
. Si elle n'est pas égale, vérifiez la section failures
dans la sortie.
ClusterName=
cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
Vous pouvez également utiliser la console CloudWatch Logs pour consulter le journal de l'agent. Recherchez le groupe de ecs-cwagent-daemon-service journaux /ecs/.
Supprimer la AWS CloudFormation pile pour l' CloudWatch agent
Si vous devez supprimer la AWS CloudFormation pile, entrez la commande suivante.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
Configuration manuelle et personnalisée
Suivez les étapes décrites dans cette section pour déployer manuellement l' CloudWatch agent afin de collecter des métriques au niveau de l'instance à partir de vos clusters Amazon ECS hébergés sur EC2 des instances.
Rôles et politiques IAM nécessaires
Deux rôles IAM sont requis. Vous devez les créer s'ils n'existent pas déjà. Pour plus d'informations sur ces rôles, consultez Rôles IAM des tâches et Rôle d'exécution des tâches Amazon ECS.
-
Rôle de tâche ECS, utilisé par l' CloudWatch agent pour publier des métriques. Si ce rôle existe déjà, vous devez vous assurer que la politique
CloudWatchAgentServerPolicy
est attachée. -
Rôle d'exécution de tâche ECS, utilisé par l'agent Amazon ECS pour lancer l' CloudWatch agent. Si ce rôle existe déjà, vous devez vous assurer que les politiques
AmazonECSTaskExecutionRolePolicy
etCloudWatchAgentServerPolicy
sont attachées.
Si vous ne disposez pas déjà de ces rôles, vous pouvez utiliser les commandes suivantes pour les créer et joindre les politiques nécessaires. Cette première commande crée le rôle de tâches ECS.
aws iam create-role --role-name CWAgentECSTaskRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Après avoir saisi la commande précédente, notez que la valeur Arn
de la sortie de commande est « TaskRoleArn ». Vous devrez l'utiliser plus tard lorsque vous utiliserez la définition de tâche. Ensuite, entrez la commande suivante pour joindre les politiques nécessaires.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSTaskRole
Cette commande suivante crée le rôle d'exécution de tâche ECS.
aws iam create-role --role-name CWAgentECSExecutionRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Après avoir saisi la commande précédente, notez que la valeur Arn
de la sortie de commande est « ExecutionRoleArn ». Vous devrez l'utiliser plus tard lorsque vous utiliserez la définition de tâche. Ensuite, entrez les commandes suivantes pour joindre les politiques nécessaires.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSExecutionRole aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy \ --role-name CWAgentECSExecutionRole
Créer la définition de tâche et lancer le service de démon
Créez une définition de tâche et utilisez-la pour lancer l' CloudWatch agent en tant que service daemon. Pour créer la définition de tâche, entrez la commande suivante. Dans les premières lignes, remplacez les espaces réservés par les valeurs réelles de votre déploiement. logs-region
est la région dans laquelle se trouve CloudWatch Logs et cluster-region
la région dans laquelle se trouve votre cluster. task-role-arn
est l'Arn du rôle de tâche ECS que vous utilisez et execution-role-arn
l'Arn du rôle d'exécution de tâche ECS.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
Ensuite, exécutez la commande suivante pour lancer le service de démon. Remplacez cluster-name
et cluster-region
par le nom et la région de votre cluster Amazon ECS.
Important
Supprimez toutes les stratégies relatives aux fournisseurs de capacité avant d'exécuter cette commande. Dans le cas contraire, la commande ne fonctionnera pas.
ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}
Si vous voyez le message d'erreur An error occurred
(InvalidParameterException) when calling the CreateService operation: Creation of
service was not idempotent
, cela signifie que vous avez déjà créé un service de démon nommé cwagent-daemon-service
. Vous devez d'abord supprimer ce service, en utilisant la commande suivante comme exemple.
ClusterName=
cluster-name
Region=cluster-region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
(En option) Configuration avancée
Vous pouvez éventuellement utiliser SSM pour spécifier d'autres options de configuration pour l' CloudWatchagent dans vos clusters Amazon ECS hébergés sur des EC2 instances. Les options sont les suivantes :
-
metrics_collection_interval
— Fréquence en secondes à laquelle l' CloudWatch agent collecte des métriques. La valeur par défaut est 60. La plage est comprise entre 1 et 172 000. -
endpoint_override
– (En option) Spécifie un point de terminaison différent vers lequel envoyer les journaux. Vous pouvez effectuer cette opération si vous publiez à partir d'un cluster dans un VPC et souhaitez que les données des journaux soient transmises à un point de terminaison d'un VPC.La valeur de
endpoint_override
doit être une chaîne qui est une URL. -
force_flush_interval
– Spécifie en secondes la durée maximale pendant laquelle les journaux demeurent dans la mémoire tampon avant d'être envoyés au serveur. Quelle que soit la configuration de ce champ, si la taille des journaux dans la mémoire tampon atteint 1 Mo, les journaux sont immédiatement envoyés au serveur. La valeur par défaut est de 5 secondes. -
region
– Par défaut, l'agent publie des métriques dans la même région que celle où se trouve l'instance de conteneur Amazon ECS. Pour remplacer cela, vous pouvez spécifier une autre région ici. Par exemple,"region" : "us-east-1"
Voici un exemple de configuration personnalisée :
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "ecs": { "metrics_collection_interval": 30 } }, "force_flush_interval": 5 } }
Pour personnaliser la configuration de votre CloudWatch agent dans vos conteneurs Amazon ECS
-
Assurez-vous que la SSMRead OnlyAccess politique Amazon est attachée à votre rôle d'exécution de tâches Amazon ECS. Vous pouvez entrer la commande suivante pour ce faire. Cet exemple suppose que votre rôle d'exécution de tâches Amazon ECS est CWAgent ECSExecution Role. Si vous utilisez un rôle différent, remplacez ce nom dans la commande suivante.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole
-
Créez le fichier de configuration personnalisé similaire à l'exemple précédent. Renommez le fichier
/tmp/ecs-cwagent-daemon-config.json
. -
Exécutez la commande suivante pour placer cette configuration dans le Parameter Store. Remplacez
cluster-region
par la région de votre cluster Amazon ECS. Pour exécuter cette commande, vous devez être connecté à un utilisateur ou à un rôle soumis à la politique Amazon SSMFull Access.Region=
cluster-region
aws ssm put-parameter \ --name "ecs-cwagent-daemon-service" \ --type "String" \ --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \ --region $Region -
Téléchargez le fichier de définition de tâche dans un fichier local, tel que
/tmp/cwagent-ecs-instance-metric.json
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json -o /tmp/cwagent-ecs-instance-metric.json
-
Modifiez le fichier de définition de tâche. Supprimez la section suivante :
"environment": [ { "name": "USE_DEFAULT_CONFIG", "value": "True" } ],
Remplacer cette section par ce qui suit :
"secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent-daemon-service" } ],
-
Redémarrez l'agent en tant que service de démon en procédant comme suit :
-
Exécutez la commande suivante.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
cat /tmp/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json -
Exécutez la commande suivante pour lancer le service de démon. Remplacez
cluster-name
etcluster-region
par le nom et la région de votre cluster Amazon ECS.ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}Si vous voyez le message d'erreur
An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent
, cela signifie que vous avez déjà créé un service de démon nommécwagent-daemon-service
. Vous devez d'abord supprimer ce service, en utilisant la commande suivante comme exemple.ClusterName=
cluster-name
Region=Region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
-