Quiero configurar métricas personalizadas para las instancias del clúster de Amazon EMR, como el uso de memoria, CPU y espacio en disco. A continuación, quiero monitorear las métricas con Amazon CloudWatch.
Solución
Nota: Si usa la versión 7.0.0 o posterior de Amazon EMR, instale el agente de CloudWatch como una aplicación. Para obtener más información, consulte Amazon CloudWatch agent.
Para configurar y recopilar métricas de un clúster de Amazon EMR, instale el agente de CloudWatch en Amazon Elastic Compute Cloud (Amazon EC2). Tras instalar el agente de CloudWatch, puede utilizar las métricas recopiladas además de las métricas publicadas predeterminadas para las instancias de Amazon EC2.
Puede almacenar y ver las métricas recopiladas con el agente de CloudWatch en CloudWatch como cualquier otra métrica de CloudWatch. El espacio de nombres predeterminado para las métricas recopiladas por el agente de CloudWatch es CWAgent. Sin embargo, puede especificar un espacio de nombres diferente cuando configure el agente.
Para configurar el agente de CloudWatch y publicar métricas personalizadas desde los nodos del clúster de Amazon EMR, siga estos pasos:
-
Cree un archivo de configuración de ejemplo del agente de CloudWatch (config.json) con la siguiente configuración de ejemplo. En el siguiente ejemplo, cuatro métricas de CPU, dos métricas de disco y una métrica de memoria recopilan las métricas para un servidor Linux. El agente está configurado para recibir estas métricas desde un cliente 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"
}
}
}
}
-
Copie el siguiente script de arranque en su ubicación de 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
El script instala primero el cliente collectd del agente de CloudWatch. A continuación, copia el archivo config.json de Amazon S3 en la ruta local /home/hadoop. Por último, el script ejecuta el agente de CloudWatch con el archivo config.json.
-
Añada la acción de arranque al clúster de Amazon EMR.
Tras importar las métricas collectd a CloudWatch, podrá verlas como gráficos de series temporales. También puede configurar alarmas para que se le notifique cuando las métricas superen un determinado umbral que haya especificado.
Para ver las métricas collectd en la consola de CloudWatch, seleccione el espacio de nombres para las métricas recopiladas por el agente. De forma predeterminada, este espacio de nombres se denomina CWAgent. Para obtener más información, consulte Visualización de las métricas recopiladas importadas por el agente de CloudWatch.