Comment obtenir la quantité d'espace disque libre avec CloudWatch?

11

Est-il possible d'obtenir la quantité d'espace disque libre (df) avec CloudWatch? Si oui, quelle métrique représente l'espace disque libre?

Jan Deinhard
la source

Réponses:

7

Mettre à jour

Pendant ce temps, AWS fournit ses propres exemples de scripts pour surveiller l'utilisation de la mémoire et de l'espace disque sur vos instances Amazon EC2 exécutant Linux au moins, consultez Nouveaux scripts de surveillance Amazon CloudWatch :

Vous pouvez exécuter ces scripts sur vos instances et les configurer pour signaler des métriques d'utilisation de la mémoire et de l'espace disque à Amazon CloudWatch. Une fois les métriques soumises à CloudWatch, vous pouvez afficher des graphiques, calculer des statistiques et définir des alarmes sur ceux-ci dans la console CloudWatch ou via l' API CloudWatch .

[...]

Pour en savoir plus sur l'utilisation des scripts, y compris l'installation, la configuration et la configuration, veuillez visiter « Amazon CloudWatch Monitoring Scripts for Linux » dans le Amazon CloudWatch Developer Guide.

Veuillez noter cependant que de nombreuses solutions de surveillance tierces populaires fournissent des échantillons respectifs ou des solutions complètes pour la surveillance de l'utilisation de la mémoire et de l'espace disque, donc il n'est généralement pas nécessaire de réinventer la roue. Les scripts fournis par AWS sont également assez décents et étendus, c'est-à-dire qu'ils couvrent le cas d'utilisation plus en profondeur que la plupart des scripts personnalisés personnalisés flottants.


Réponse initiale

Non, ce n'est pas encore possible. Consultez les réponses du personnel AWS sur la question connexe cloudwatch pour l'utilisation de la mémoire , qui en explique également la raison:

[...] Pour le moment, vous n'avez pas besoin de déployer quoi que ce soit dans votre AMI pour surveiller votre instance. Des mesures telles que l'utilisation de la mémoire et l'espace disque nous obligent à examiner le système d'exploitation exécuté dans l'instance et c'est pourquoi nous n'avons pas ces précieuses mesures.

Nous cherchons des moyens de fournir plus d'informations sur votre système d'exploitation et vos applications et nous vous fournirons plus de détails au fur et à mesure que nous affermirons les plans.

Je doute que cette fonctionnalité émerge de sitôt, car la fonctionnalité requise de l'agent multiplateforme est déjà disponible auprès de quelques autres fournisseurs offrant déjà des solutions de surveillance dédiées, et cette tâche est tout sauf simple - ce serait certainement une énorme victoire d'avoir bien sûr, la prise en charge de cela intégré à AWS.

Steffen Opel
la source
"Bien que cela ne change pas ce qui a été indiqué dans ma réponse initiale ..." - votre réponse d'origine disait qu'AWS ne pouvait pas signaler l'utilisation du disque, mais maintenant les scripts AWS signalent l'utilisation du disque. La réponse à la question OP a donc changé.
propulsé par vapeur
3

Voici une meilleure version du même script qui récupère les volumes attachés à une instance et rapporte l'utilisation de chaque volume.

notez la sous-station de / dev / xvd pour / dev / sd

notez également que vous avez besoin des outils ec2-api et des outils cloudwatch installés avec un certificat pour les faire fonctionner

#!/bin/bash

export JAVA_HOME=
export AWS_CREDENTIAL_FILE=
export EC2_CERT=
export EC2_PRIVATE_KEY=
export EC2_HOME=
export AWS_CLOUDWATCH_HOME=

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)
VOLUME_LIST=$($EC2_HOME/bin/ec2-describe-volumes | grep ${INSTANCE_ID} | awk '{ print $2 ";" $4}')

for VOLUME_LINE in $(echo $VOLUME_LIST); do
        VOLUME_NAME=${VOLUME_LINE%;*}
        DEVICE_NAME=/dev/xvd${VOLUME_LINE#*;/dev/sd}
        USAGE=$(df $DEVICE_NAME | perl -ne 'print "$1" if /(\d+)\%/')
        $AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $USAGE -d "Volume=$VOLUME_NAME" -m UsedStoragePercentage -u Percent -n "NAMESPACE" --show-request
done
marstonstudio
la source
2

J'ai mis en place un script bash pour ce faire en utilisant les métriques cloudwatch personnalisées

http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html

remplacez XXXX par vos propres valeurs

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export AWS_CREDENTIAL_FILE=XXXX 
export AWS_CLOUDWATCH_HOME=XXXX

INSTANCE_ID=$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)

$AWS_CLOUDWATCH_HOME/bin/mon-put-data -v $(df / | perl -ne 'print "$1" if /(\d+)\%/') -d "InstanceId=$INSTANCE_ID,Volume=root" -u Percent -m UsedStoragePercentage -n "XXXX" --show-request

mettez cela dans un travail cron, et vous aurez une métrique sur laquelle vous pouvez mettre des alarmes. J'ai décidé d'utiliser des pourcentages et des points de montage spécifiques à l'instance au lieu de surveiller le volume lui-même, car cela convenait à mes besoins. J'ai tendance à redimensionner et à changer de volume plus que je ne redémarre les instances. Votre kilométrage peut varier.

marstonstudio
la source
1

Mécontents des exemples de scripts d'Amazon ou des divers scripts tiers utilisant leurs outils de ligne de commande basés sur Perl, nous avons écrit notre propre script en Python: aws-cloudwatch-linux-metrics .

Fichier unique, sans dépendances et s'exécute sur n'importe quel interpréteur Python.

Il lit les données directement à partir du /procsystème de fichiers et signale l'utilisation de l'espace disque en plus d'autres mesures du système qui ne sont pas observables de l'extérieur:

  • Moyenne de charge CPU
  • Connexions réseau (TCP et UDP)
  • Utilisation de l'espace disque
  • Utilisation de la mémoire

Il rapporte ces mesures en ce qui concerne à la fois l'ID d'instance et l'ID d'image.

malthe
la source
Salut, votre projet github est parti
Roco CTZ
0

Quelque temps après la question, AWS a fourni des scripts avec des options pour signaler l'utilisation du disque.

Vous pouvez exécuter ce script dans crontab pour signaler l'espace disque disponible à CloudWatch. N'oubliez pas d'inclure le chemin du disque.

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

Les documents donnent une liste complète des options et des exemples ici .

à vapeur
la source