Comment puis-je surveiller l'utilisation de la mémoire dans Elastic Beanstalk pour les AMI Amazon Linux exécutées sur des instances Amazon EC2 ?

Date de la dernière mise à jour : 2020-10-21

L'utilisation de la mémoire pour mes Amazon Linux Amazon Machine Images (AMI) fonctionnant sur des instances Amazon Elastic Compute Cloud (Amazon EC2) dans AWS Elastic Beanstalk est trop élevée et croissante. Je veux surveiller l'utilisation de la mémoire au fil du temps.

Brève description

Pour surveiller l'utilisation de la mémoire (RAM), vous devez ajouter une métrique Amazon CloudWatch personnalisée à l'aide d'un fichier .ebextensions. Le fichier .ebextensions exécute un script dans les environnements de vos instances Amazon EC2. Le script émet régulièrement des métriques de mémoire et d'autres métriques CloudWatch personnalisées.

Important : l'extension .ebextension utilisée dans la résolution suivante s'applique aux instances AMI Amazon Linux et non pas aux instances AMI Ubuntu personnalisées dans Elastic Beanstalk.

Résolution

1.    Créez un fichier .ebextensions (tel que .ebextensions/cloudwatch.config) basé sur l'exemplesuivant :

packages:
  yum:
    perl-DateTime: []
    perl-Sys-Syslog: []
    perl-LWP-Protocol-https: []
    perl-Switch: []
    perl-URI: []
    perl-Bundle-LWP: []
sources: 
  /opt/cloudwatch: https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.1.zip
  
container_commands:
  01-setupcron:
    command: |
      echo '*/5 * * * * root perl /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl `{"Fn::GetOptionSetting" : { "OptionName" : "CloudWatchMetrics", "DefaultValue" : "--mem-util --disk-space-util --disk-path=/" }}` >> /var/log/cwpump.log 2>&1' > /etc/cron.d/cwpump
  02-changeperm:
    command: chmod 644 /etc/cron.d/cwpump
  03-changeperm:
    command: chmod u+x /opt/cloudwatch/aws-scripts-mon/mon-put-instance-data.pl
option_settings:
  "aws:autoscaling:launchconfiguration" :
    IamInstanceProfile : "aws-elasticbeanstalk-ec2-role"
  "aws:elasticbeanstalk:customoption" :
    CloudWatchMetrics : "--mem-util --mem-used --mem-avail --disk-space-util --disk-space-used --disk-space-avail --disk-path=/ --auto-scaling"

Remarque : pour les plateformes basées sur Amazon Linux 2, remplacez le package yum Perl-Bundle-LWP dans le fichier de configuration précédent par Perl-Digestt-SHA.x86_64.

2.     Ajoutez les autorisations suivantes au profil d'instancede l'environnement Elastic Beanstalk :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "cloudwatch:PutMetricData",
        "ec2:DescribeTags"
      ],
      "Effect": "Allow",
      "Resource": [
        "*"
      ]
    }
  ]
}

Remarque : les autorisations de l'étape 2 donnent aux instances de votre environnement les autorisations nécessaires pour publier les mesures de l'étape 1 dans CloudWatch.

3.    Créez un groupe source d'application qui inclut votre fichier .ebextensions de l'étape 1.

4.    Déployez l'application Elastic Beanstalk mise à jour.

5.    Affichez les mesures dans la console Cloudwatch sous l'espace de noms Système Linux.

Remarque : un exemple de fichier de configuration incluant des métriques, des alarmes et une mise à l'échelle pour l'utilisation de la mémoire est disponible sur AWS GitHub.


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


Besoin d'aide pour une question technique ou de facturation ?