Comment puis-je obtenir des métriques d'Amazon CloudWatch qui présentent le débit EBS de mon instance EC2, puis configurer une alarme qui m'informe lorsque l'instance EC2 atteint la limite de débit ?

Date de la dernière mise à jour : 20/08/2020

Comment puis-je obtenir des métriques d'Amazon CloudWatch qui présentent le débit d’agrégation Amazon Elastic Block Store (Amazon EBS) de mon instance Amazon Elastic Compute Cloud (Amazon EC2) ? En outre, comment puis-je alors configurer une alarme qui m'informe lorsque l'instance EC2 a atteint la limite de débit ?

Brève description

Il n'y a aucune métrique Amazon EBS native qui suit le débit EBS d'une instance Amazon EC2 basée sur Xen dans CloudWatch. Cependant, vous pouvez utiliser le script EC2EBSThroughput/ebs-stats.sh pour mesurer le débit EBS d'agrégation de votre instance EC2.

Le script récupère le nombre total d'octets en lecture/écriture par seconde pour tous les volumes attachés, et transmet le débit en tant que métrique à Amazon CloudWatch. Vous pouvez ensuite consulter les métriques dans la console Amazon CloudWatch et définir une alarme qui se déclenche en fonction d'un seuil que vous spécifiez.

Remarque : le nouveau Nitro, les instances C5 et M5, incluent les mesures CloudWatch EBSIOBalance% et EBSByteBalance%. Pour plus d'informations, voir Instances optimisées pour Amazon EBS.

Le script ebs-stats.sh est destiné aux instances EC2 basées sur Xen dans CloudWatch. Il n’est compatible qu’avec les instances Amazon Linux, Red Hat Enterprise Linux et CentOS. Vous pouvez néanmoins le personnaliser pour d'autres distributions Linux.

Remarque : si votre instance a un volume de stockage d'instance, le script indique le débit agrégé, y compris le débit du volume de stockage d'instance. Vous n'obtiendrez donc peut-être pas une mesure précise du débit EBS à partir de ce script.

Résolution

1.    Pour les distributions basés sur RHEL, installez l'interface de ligne de commande AWS (AWS CLI), si vous ne l'avez pas déjà fait.

2.    Téléchargez le script ebs-stats.sh.

3.    Placez le script sur votre instance, puis le rendez exécutable. Vous devez exécuter le script en tant qu'utilisateur root ou sudo. À défaut, il échouera.

$sudo chmod +x ebs-stats.sh 

4.    À partir de l'interface de ligne de commande AWS, définissez la valeur de la fréquence d'exécution ebs-stats.sh en exécutant la commande suivante en arrière-plan :

$sudo nohup ./ebs-stats.sh example-sleep-interval &

Remarque : remplacez example-sleep-interval par le nombre souhaité de secondes entre chaque point de données.

5.    Créez un rôle IAM.

6.    Attachez la stratégie suivante au rôle :

{
  "Version": "2012-10-17",
  "Statement": [{
    "Action": [
      "cloudwatch:ListMetrics",
      "cloudwatch:GetMetricStatistics",
      "cloudwatch:PutMetricData",
      "autoscaling:DescribeAutoScalingInstances"
    ],
    "Effect": "Allow",
    "Resource": "*"
  }]
}

7.    Attachez la stratégie IAM pour votre instance EC2. Cela permet au script de transférer les métriques à Amazon CloudWatch.

8.    Dans la console CloudWatch, définissez une alarme pour EBSThroughoutMB. Pour plus d'informations, consultez la section Création d'une alarme CloudWatch basée sur un seuil statique ou Utilisation d’alarmes Amazon CloudWatch.

Veillez à choisir la bonne période en fonction de l'argument que vous avez utilisé.