Comment collecter des métriques personnalisées à partir d'instances de cluster Amazon EMR et les surveiller dans CloudWatch ?

Dernière mise à jour : 31/08/2022

Je veux configurer des métriques personnalisées pour les instances de cluster Amazon EMR, telles que la mémoire, le CPU et l'utilisation de l'espace disque. Ensuite, je veux surveiller ces métriques à l'aide d'Amazon CloudWatch.

Solution

Vous pouvez configurer et collecter des métriques à partir d'un cluster Amazon EMR en installant l'agent CloudWatch sur Amazon Elastic Compute Cloud (Amazon EC2). Après avoir installé l'agent CloudWatch, vous pouvez utiliser les métriques collectées en plus des métriques publiées par défaut pour les instances Amazon EC2.

Vous pouvez stocker et afficher les métriques que vous collectez avec l'agent CloudWatch dans CloudWatch de la même manière que n'importe quelle autre métrique CloudWatch. L'espace de noms par défaut pour les métriques collectées par l'agent CloudWatch est CWAgent. Cependant, il est possible de spécifier un espace de noms différent lors de la configuration de l'agent.

Afin de configurer l'agent CloudWatch et publier des métriques personnalisées à partir des nœuds de cluster Amazon EMR, procédez comme suit :

1.    Créez un exemple de fichier de configuration de l'agent CloudWatch (config.json) en utilisant l'exemple de configuration suivant. Le fichier de configuration de l'agent est un fichier JSON spécifiant les métriques et les journaux que l'agent doit collecter, y compris les métriques personnalisées. Dans l'exemple suivant de collecte des métriques pour un serveur Linux, quatre métriques de CPU, deux de disque et une de mémoire sont collectées. L'agent est configuré pour recevoir ces métriques à partir 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"
      }
    }
  }
}

2.    Copiez le script d'amorçage suivant (exemple : emr-cloudwatchagent-bootstrap.sh) sur votre emplacement Amazon Simple Storage Service (Amazon S3).

------emr-cloudwatchagent-bootstrap.sh---------
#!/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 effectue les opérations suivantes :

  • Installe l'agent CloudWatch ainsi que le client collectd.
  • Copie le fichier config.json d'Amazon S3 vers le chemin local /home/hadoop.
  • Exécute l'agent CloudWatch avec le fichier config.json.

3.    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 temporels. Vous pouvez également configurer des alarmes afin de recevoir des avertissements lorsque les métriques dépassent le seuil que vous avez spécifié. Pour afficher les métriques collectd dans la console CloudWatch, sélectionnez l'espace de noms des métriques collectées par l'agent. Par défaut, cet espace de noms est appelé CWagent. Pour plus d'informations, veuillez consulter la section Affichage des mesures collectd importées par l'agent CloudWatch.


Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?