Je souhaite configurer des métriques personnalisées pour les instances de cluster Amazon EMR, comme l’utilisation de la mémoire, du processeur et de l’espace disque. Je souhaite également surveiller les statistiques en utilisant Amazon CloudWatch.
Résolution
Remarque : si vous utilisez Amazon EMR version 7.0.0 ou ultérieure, installez l’agent CloudWatch comme application. Pour plus d’informations, consultez Agent Amazon CloudWatch.
Pour configurer et collecter des métriques à partir d’un cluster Amazon EMR, installez l’agent CloudWatch sur Amazon Elastic Compute Cloud (Amazon EC2). Après avoir installé l’agent CloudWatch, utilisez les métriques collectées en plus des métriques publiées par défaut pour les instances Amazon EC2.
Stockez et affichez les métriques que vous collectez en utilisant l’agent CloudWatch dans CloudWatch, de la même manière que les autres métriques CloudWatch. L’espace de noms par défaut pour les métriques collectées par l’agent CloudWatch est CWAgent. En revanche, lorsque vous configurez l’agent, vous pouvez spécifier un espace de noms différent.
Pour configurer l’agent CloudWatch et publier des métriques personnalisées à partir des nœuds du cluster Amazon EMR, procédez comme suit :
-
Créez un fichier de configuration de l’agent CloudWatch (config.json) selon l’exemple de configuration suivant. Dans l’exemple suivant, quatre métriques du processeur, deux métriques du disque et une métrique de la mémoire collectent les métriques pour un serveur Linux. L’agent est configuré pour recevoir ces métriques d’un client collectd :
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"cpu": {
"measurement": [
"cpu_usage_idle",
"cpu_usage_iowait",
"cpu_usage_user",
"cpu_usage_system"
],
"metrics_collection_interval": 60,
"resources": [
"*"
],
"totalcpu": false
},
"disk": {
"measurement": [
"used_percent",
"inodes_free"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
-
Copiez le script d’amorçage suivant dans votre emplacement Amazon Simple Storage Service (Amazon S3) :
#!/bin/bash
sudo yum install amazon-cloudwatch-agent -y
sudo amazon-linux-extras install collectd -y
aws s3 cp <s3 path for config.json> /home/hadoop/config.json
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:///home/hadoop/config.json
Le script installe d’abord le client collectd de l’agent CloudWatch. Ensuite, il copie le fichier config.json d’Amazon S3 vers le chemin local **/home/hadoop.**Enfin, le script exécute l’agent CloudWatch en utilisant le fichier config.json.
-
Ajoutez l’action d’amorçage au cluster Amazon EMR.
Après avoir importé les métriques collectd dans CloudWatch, vous pouvez les afficher sous forme de graphiques chronologiques. Vous pouvez également définir des alarmes afin d’être averti lorsque les métriques dépassent un seuil spécifié.
Pour afficher les métriques collectd dans la console CloudWatch, choisissez l’espace de noms des métriques collectées par l’agent. Cet espace de noms est appelé par défaut CWagent. Pour plus d’informations, consultez Affichage des métriques collectd importées par l’agent CloudWatch.