Surveillance des métriques de la mémoire et du disque pour les instances Amazon EC2 Linux - Amazon Elastic Compute Cloud

Surveillance des métriques de la mémoire et du disque pour les instances Amazon EC2 Linux

Vous pouvez utiliser Amazon CloudWatch pour collecter des métriques et des journaux à partir des systèmes d’exploitation pour vos instances EC2.

Important

Les scripts de surveillance sont obsolètes. Nous vous recommandons d’utiliser l’agent CloudWatch pour collecter des métriques et des fichiers journaux. Nous fournissons ces informations sur les scripts de surveillance pour les clients qui migrent encore des scripts de surveillance obsolètes vers l'agent CloudWatch.

Collecte de métriques à l'aide de l'agent CloudWatch

Vous pouvez utiliser l’agent CloudWatch pour collecter des métriques système et des fichiers journaux à partir d'instances Amazon EC2 et de serveurs sur site. L’agent prend en charge Windows Server et Linux, et vous permet de sélectionner les métriques à collecter, notamment des métriques de sous-ressource, par exemple, cœur par UC. Nous vous recommandons d'utiliser l’agent pour collecter des métriques et des fichiers journaux plutôt que d’utiliser les scripts de surveillance. Pour plus d'informations, consultez Collecte de métriques à partir d'instances Amazon EC2 et de serveurs sur site avec l'agent CloudWatch dans le Guide de l'utilisateur Amazon CloudWatch.

Obsolète : Collecte de métriques à l'aide des scripts de surveillance CloudWatch

Important

Nous fournissons des informations sur les scripts de surveillance pour les clients qui n'ont pas encore migré des scripts de surveillance obsolètes vers l'agent CloudWatch.

Les scripts de surveillance montrent comment produire et consommer des métriques personnalisées pour Amazon CloudWatch. Ces exemples de scripts Perl comportent un exemple entièrement fonctionnel qui indique les métriques d'utilisation de la mémoire, des échanges et de l'espace sur le disque pour une instance Linux.

Les coûts d'utilisation Amazon CloudWatch standard pour les métriques personnalisées s'appliquent à votre utilisation de ces scripts. Pour plus d'informations, consultez la page de tarification Amazon CloudWatch.

Systèmes pris en charge

Les scripts de surveillance ont été testés sur des instances utilisant les systèmes suivants. L'utilisation des scripts de surveillance sur un autre système d'exploitation n'est pas prise en charge.

  • Amazon Linux 2

  • Amazon Linux AMI 2014.09.2 ou version suivante

  • Red Hat Enterprise Linux 6.9 et 7.4

  • SUSE Linux Enterprise Server 12

  • Ubuntu Server 14.04 et 16.04

Autorisations requises

Assurez-vous que les scripts disposent de l’autorisation d’appeler les actions suivantes en associant un rôle IAM à votre instance :

  • cloudwatch:PutMetricData

  • cloudwatch:GetMetricStatistics

  • cloudwatch:ListMetrics

  • ec2:DescribeTags

Pour plus d'informations, consultez Utilisation des rôles IAM.

Installation des packages obligatoires

Avec certaines versions de Linux, vous devez installer des modules Perl supplémentaires avant d’utiliser les scripts de surveillance.

Pour installer les packages obligatoires sur l’AMI Amazon Linux 2 et Amazon Linux

  1. Connectez-vous à votre instance. Pour plus d'informations, consultez Connectez-vous à votre instance Linux.

  2. A l'invite de commande, installez les packages comme suit :

    sudo yum install -y perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA.x86_64

Pour installer les packages requis sur Ubuntu

  1. Connectez-vous à votre instance. Pour plus d'informations, consultez Connectez-vous à votre instance Linux.

  2. A l'invite de commande, installez les packages comme suit :

    sudo apt-get update sudo apt-get install unzip sudo apt-get install libwww-perl libdatetime-perl

Pour installer les packages obligatoires sur Red Hat Enterprise Linux 7

  1. Connectez-vous à votre instance. Pour plus d'informations, consultez Connectez-vous à votre instance Linux.

  2. A l'invite de commande, installez les packages comme suit :

    sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA --enablerepo="rhui-REGION-rhel-server-optional" -y sudo yum install zip unzip

Pour installer les packages requis sur Red Hat Enterprise Linux 6.9

  1. Connectez-vous à votre instance. Pour plus d'informations, consultez Connectez-vous à votre instance Linux.

  2. A l'invite de commande, installez les packages comme suit :

    sudo yum install perl-DateTime perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL perl-Digest-SHA gcc -y sudo yum install zip unzip
  3. Exécutez CPAN en tant qu'utilisateur élevé :

    sudo cpan

    Appuyez sur ENTER via les invites jusqu'à ce que l'invite suivante s'affiche :

    cpan[1]>
  4. Lors de l'invite CPAN, exécutez chacune des invites suivantes : exécutez une commande et son installation et lorsque vous retournez à l'invite CPAN, exécutez la commande suivante. Appuyez sur ENTER lorsque vous êtes invité à continuer au cours du processus :

    cpan[1]> install YAML cpan[2]> install LWP::Protocol::https cpan[3]> install Sys::Syslog cpan[4]> install Switch

Pour installer les packages requis sur SUSE

  1. Connectez-vous à votre instance. Pour plus d'informations, consultez Connectez-vous à votre instance Linux.

  2. Sur les serveurs exécutant SUSE Linux Enterprise Server 12, vous aurez peut-être besoin de télécharger le package perl-Switch. Vous pouvez télécharger et installer ce package avec les commandes suivantes :

    wget http://download.opensuse.org/repositories/devel:/languages:/perl/SLE_12_SP3/noarch/perl-Switch-2.17-32.1.noarch.rpm sudo rpm -i perl-Switch-2.17-32.1.noarch.rpm
  3. Installez les packages obligatoires comme suit :

    sudo zypper install perl-Switch perl-DateTime sudo zypper install –y "perl(LWP::Protocol::https)"

Installation des scripts de surveillance

Les étapes suivantes vous montrent comment télécharger, décompresser et configurer les scripts de surveillance CloudWatch sur une instance EC2 Linux.

Pour télécharger, installer et configurer les scripts de surveillance

  1. A une invite de commande, placez-vous dans le dossier où vous voulez stocker les scripts de surveillance, puis tapez la commande suivante pour les télécharger :

    curl https://aws-cloudwatch.s3.amazonaws.com/downloads/CloudWatchMonitoringScripts-1.2.2.zip -O
  2. Exécutez les commandes suivantes pour installer les scripts de surveillance que vous avez téléchargés :

    unzip CloudWatchMonitoringScripts-1.2.2.zip && \ rm CloudWatchMonitoringScripts-1.2.2.zip && \ cd aws-scripts-mon

Le package pour les scripts de surveillance contient les fichiers suivants :

  • CloudWatchClient.pm – Module Perl partagé qui simplifie l'appel de Amazon CloudWatch à partir d'autres scripts.

  • mon-put-instance-data.pl – Collecte des métriques du système sur une instance Amazon EC2 (utilisation de la mémoire, des échanges et de l'espace sur le disque) et les envoie vers Amazon CloudWatch.

  • mon-get-instance-stats.pl – Envoie des requêtes à Amazon CloudWatch et affiche les statistiques d'utilisation les plus récentes pour l'instance EC2 sur laquelle ce script est exécuté.

  • awscreds.template – Modèle de fichier pour les informations d'identification AWS qui stocke votre ID de clé d'accès rapide et votre clé d'accès secrète.

  • LICENSE.txt – Fichier texte contenant la licence Apache 2.0.

  • NOTICE.txt – Mention du droit d'auteur.

mon-put-instance-data.pl

Ce script collecte les données d'utilisation de la mémoire, des échanges et de l'espace sur le disque en ce qui concerne le système actuel. Il effectue ensuite un appel distant de Amazon CloudWatch pour présenter les données collectées en tant que métriques personnalisées.

Options
Nom Description

--mem-util

Collecte et envoie les métriques MemoryUtilization en pourcentages. Cette métrique comptabilise la mémoire allouée par les applications et le système d'exploitation telle qu'elle est utilisée, et inclut également la mémoire cache et tampon utilisée si vous spécifiez l'option --mem-used-incl-cache-buff.

--mem-used

Collecte et envoie les métriques MemoryUsed, présentées en mégaoctets. Cette métrique comptabilise la mémoire allouée par les applications et le système d'exploitation telle qu'elle est utilisée, et inclut également la mémoire cache et tampon utilisée si vous spécifiez l'option --mem-used-incl-cache-buff.

--mem-used-incl-cache-buff

Si vous incluez cette option, la mémoire actuellement utilisée pour le cache et les tampons est comptabilisée comme « utilisée » lorsque les métriques sont enregistrées pour --mem-util, --mem-used et --mem-avail.

--mem-avail

Collecte et envoie les métriques MemoryAvailable, présentées en mégaoctets. Cette métrique comptabilise la mémoire allouée par les applications et le système d'exploitation telle qu'elle est utilisée, et inclut également la mémoire cache et tampon utilisée si vous spécifiez l'option --mem-used-incl-cache-buff.

--swap-util

Collecte et envoie les métriques SwapUtilization, présentées en pourcentages.

--swap-used

Collecte et envoie les métriques SwapUsed, présentées en mégaoctets.

--disk-path=PATH

Sélectionne le disque sur lequel effectuer le rapport.

PATH peut spécifier un point de montage ou n'importe quel fichier situé sur un point de montage pour le système de fichiers qui doit être présenté. Pour sélectionner plusieurs disques, spécifiez un --disk-path=PATH pour chacun d'entre eux.

Pour sélectionner un disque pour les systèmes de fichiers montés sur / et /home, utilisez les paramètres suivants :

--disk-path=/ --disk-path=/home

--disk-space-util

Collecte et envoie la métrique DiskSpaceUtilization pour les disques sélectionnés. Cette métrique est présentée en pourcentages.

Notez que les métriques d'utilisation des disques calculées par ce script diffèrent des valeurs calculées par la commande df -k -l. Si vous trouvez les valeurs de la commande df -k -l plus utiles, vous pouvez modifier les calculs dans le script.

--disk-space-used

Collecte et envoie la métrique DiskSpaceUsed pour les disques sélectionnés. Cette métrique est présentée par défaut en gigaoctets.

En raison de l'espace réservé sur le disque dans les systèmes d'exploitation Linux, l'espace utilisé et l'espace disponible sur le disque ne s'ajoutent peut-être pas correctement à la quantité de l'espace total du disque.

--disk-space-avail

Collecte et envoie la métrique DiskSpaceAvailable pour les disques sélectionnés. Cette métrique est présentée en gigaoctets.

En raison de l'espace réservé sur le disque dans les systèmes d'exploitation Linux, l'espace utilisé et l'espace disponible sur le disque ne s'ajoutent peut-être pas correctement à la quantité de l'espace total du disque.

--memory-units=UNITS

Spécifie les unités avec lesquelles il faut indiquer l'utilisation de la mémoire. Si rien n'est spécifié, la mémoire est présentée en mégaoctets. Parmi les UNITES, on compte les suivantes : octets, kilo-octets, mégaoctets, gigaoctets.

--disk-space-units=UNITS

Spécifie les unités avec lesquelles il faut indiquer l'utilisation de l'espace sur le disque. Si rien n'est spécifié, l'espace sur le disque est présenté en gigaoctets. Parmi les UNITES, on compte les suivantes : octets, kilo-octets, mégaoctets, gigaoctets.

--aws-credential- file=PATH

Indique l'emplacement du fichier contenant les informations d'identification AWS.

Ce paramètre ne peut pas être utilisé avec les paramètres --aws-access-key-id et --aws-secret-key.

--aws-access-key-id=VALUE

Spécifie l'ID de clé d'accès rapide AWS à utiliser pour identifier le mandataire. Doit être utilisé avec l'option --aws-secret-key. N'utilisez pas cette option avec le paramètre --aws-credential-file.

--aws-secret-key=VALUE

Spécifie la clé d'accès secrète AWS à utiliser pour assigner la demande vers CloudWatch. Doit être utilisé avec l'option --aws-access-key-id. N'utilisez pas cette option avec le paramètre --aws-credential-file.

--aws-iam-role=VALUE

Spécifie le rôle IAM utilisé pour fournir des informations d'identification AWS. La valeur =VALUE est obligatoire. Si aucune information d'identification n'est spécifié, le rôle IAM par défaut associé à l'instance EC2 est appliqué. Seul un rôle IAM peut être utilisé. Si aucun rôle IAM n'est trouvé ou si plus d'un rôle IAM est trouvé, le script retournera une erreur.

N'utilisez pas cette option avec les paramètres --aws-credential-file, --aws-access-key-id ou --aws-secret-key.

--aggregated[=only]

Ajoute des métriques regroupées pour le type d'instance, l'ID d'AMI et en règle générale pour la région. La valeur =only est optionnelle. Si cela est indiqué, le script indique uniquement des métriques regroupées.

--auto-scaling[=only]

Ajoute des métriques regroupées pour le groupe Auto Scaling. La valeur =only est optionnelle. Si cela est indiqué, le script indique uniquement des métriques Auto Scaling. La stratégie IAM associée au compte ou au rôle IAM utilisant les scripts doit avoir les autorisations d'appeler l'action EC2 DescribeTags.

--verify

Effectue un test du script qui collecte les métriques, prépare une demande HTTP complète, mais n'appelle pas réellement CloudWatch pour présenter les données. Cette option vérifie également que les informations d'identification sont fournies. Lorsqu'elle est exécutée en mode commentaire, cette option produit les métriques qui seront envoyées vers CloudWatch.

--from-cron

Utilisez cette option lorsque vous appelez le script à partir de Cron. Lorsque cette option est utilisée, tous les résultats du diagnostic sont supprimés, mais les messages d'erreur sont envoyés au journal du système local du compte d'utilisateur.

--verbose

Affiche des informations détaillées sur ce que fait le script.

--help

Affiche les informations d'utilisation.

--version

Affiche le numéro de version du script.

Exemples

Les exemples suivants partent du principe que vous avez fourni un rôle IAM ou un fichier awscreds.conf. Sinon, vous devez fournir les informations d'identification utilisateur à l'aide des paramètres --aws-access-key-id et --aws-secret-key pour ces commandes.

L’exemple suivant exécute un test simple sans publier les données dans CloudWatch.

./mon-put-instance-data.pl --mem-util --verify --verbose

L’exemple suivant collecte toutes les métriques de mémoire disponibles et les envoie vers CloudWatch, en comptabilisant la mémoire cache et tampon comme utilisée

./mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --mem-used --mem-avail

L’exemple suivant collecte les métriques regroupées pour un groupe Auto Scaling et les envoyer vers Amazon CloudWatch sans présenter de métriques d'instance individuelles

./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only

L’exemple suivant collecte des métriques regroupées pour un type d'instance, un ID d'AMI et une région, et les envoyer vers Amazon CloudWatch sans présenter des métriques d'instance individuelles

./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --aggregated=only

Pour établir une planification cron pour des métriques signalées à CloudWatch, commencez par modifier le crontab à l’aide de la commande crontab -e. Ajoutez la commande suivante pour indiquer l'utilisation de la mémoire et de l'espace sur le disque à CloudWatch toutes les cinq minutes :

*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --mem-used-incl-cache-buff --mem-util --disk-space-util --disk-path=/ --from-cron

Si le script rencontre une erreur, il écrit le message d'erreur dans le journal du système.

mon-get-instance-stats.pl

Ces requêtes de script CloudWatch pour les statistiques concernant les métriques de la mémoire, des échanges et de l'espace sur le disque dans un intervalle de temps donné à l'aide du nombre des heures les plus récentes. Ces données sont fournies pour l'instance Amazon EC2 sur laquelle ce script est exécuté.

Options
Nom Description

--recent-hours=N

Spécifie le nombre d'heures récentes sur lesquelles établir un rapport, comme ce qui est représenté par N où N est un nombre entier.

--aws-credential-file=PATH

Indique l'emplacement du fichier contenant les informations d'identification AWS.

--aws-access-key-id=VALUE

Spécifie l'ID de clé d'accès rapide AWS à utiliser pour identifier le mandataire. Doit être utilisé avec l'option --aws-secret-key. N'utilisez pas cette option avec --aws-credential-file.

--aws-secret-key=VALUE

Spécifie la clé d'accès secrète AWS à utiliser pour assigner la demande vers CloudWatch. Doit être utilisé avec l'option --aws-access-key-id. N'utilisez pas cette option avec --aws-credential-file.

--aws-iam-role=VALUE

Spécifie le rôle IAM utilisé pour fournir des informations d'identification AWS. La valeur =VALUE est obligatoire. Si aucune information d'identification n'est spécifié, le rôle IAM par défaut associé à l'instance EC2 est appliqué. Seul un rôle IAM peut être utilisé. Si aucun rôle IAM n'est trouvé ou si plus d'un rôle IAM est trouvé, le script retournera une erreur.

N'utilisez pas cette option avec les paramètres --aws-credential-file, --aws-access-key-id ou --aws-secret-key.

--verify

Effectue un test du script. Cette option vérifie également que les informations d'identification sont fournies.

--verbose

Affiche des informations détaillées sur ce que fait le script.

--help

Affiche les informations d'utilisation.

--version

Affiche le numéro de version du script.

Exemple

Pour obtenir les statistiques d'utilisation au cours des 12 dernières heures, exécutez la commande suivante :

./mon-get-instance-stats.pl --recent-hours=12

Voici un exemple de réponse :

Instance metric statistics for the last 12 hours. CPU Utilization Average: 1.06%, Minimum: 0.00%, Maximum: 15.22% Memory Utilization Average: 6.84%, Minimum: 6.82%, Maximum: 6.89% Swap Utilization Average: N/A, Minimum: N/A, Maximum: N/A Disk Space Utilization on /dev/xvda1 mounted as / Average: 9.69%, Minimum: 9.69%, Maximum: 9.69%

Visualisation de vos métriques personnalisées dans la console

Après avoir exécuté avec succès le script mon-put-instance-data.pl, vous pouvez afficher vos métriques personnalisées dans la console Amazon CloudWatch.

Pour consulter les métriques personnalisées

  1. Exécutez mon-put-instance-data.pl comme décrit précédemment.

  2. Ouvrez la console CloudWatch à l'adresse https://console.aws.amazon.com/cloudwatch/.

  3. Sélectionnez View Metrics (Afficher les métriques).

  4. Pour Viewing (Affichage), vos métriques personnalisées publiées par le script sont affichées avec le préfixe System/Linux.

Dépannage

Le module CloudWatchClient.pm met en cache localement les métadonnées de l'instance. Si vous créez une AMI à partir d'une instance où vous avez exécuté les scripts de surveillance, n'importe quelle instance lancée à partir de l'AMI dans le cache TTL (par défaut : six heures, 24 heures pour les groupes Auto Scaling) émettra des métriques à l'aide de l'ID d'instance de l'instance d'origine. Après la période de cache TTL, le script récupère des données actualisées et les scripts de surveillance utilisent l'ID d'instance de l'instance actuelle. Pour corriger immédiatement cela, supprimez les données mises en cache à l'aide de la commande suivante :

rm /var/tmp/aws-mon/instance-id