Ist es möglich, mit CloudWatch den freien Speicherplatz (df) abzurufen? Wenn ja, welche Metrik repräsentiert den freien Speicherplatz?
Ist es möglich, mit CloudWatch den freien Speicherplatz (df) abzurufen? Wenn ja, welche Metrik repräsentiert den freien Speicherplatz?
Antworten:
In der Zwischenzeit stellt AWS eigene Beispielskripte zur Überwachung der Speicher- und Speicherplatznutzung auf Ihren Amazon EC2-Instanzen unter Linux bereit. Weitere Informationen finden Sie unter Neue Amazon CloudWatch-Überwachungsskripte :
Sie können diese Skripts auf Ihren Instanzen ausführen und so konfigurieren, dass Speicher- und Speicherplatznutzungsmetriken an Amazon CloudWatch gemeldet werden. Sobald die Metriken an CloudWatch gesendet wurden, können Sie Diagramme anzeigen, Statistiken berechnen und Alarme für sie in der CloudWatch-Konsole oder über die CloudWatch-API festlegen .
[...]
Weitere Informationen zur Verwendung der Skripte, einschließlich Installation, Einrichtung und Konfiguration, finden Sie unter " Amazon CloudWatch-Überwachungsskripte für Linux " im Amazon CloudWatch-Entwicklerhandbuch.
Bitte beachten Sie jedoch, dass viele gängige Überwachungslösungen von Drittanbietern bereits entsprechende Beispiele oder vollwertige Lösungen für die Überwachung der Speicher- und Speicherplatznutzung bieten, sodass das Rad normalerweise nicht neu erfunden werden muss. Die von AWS bereitgestellten Skripte sind jedoch auch recht anständig und umfangreich, dh sie decken den Anwendungsfall gründlicher ab als die meisten benutzerdefinierten einmaligen Skripte.
Nein, das ist (noch) nicht möglich. Informationen zur Speichernutzung finden Sie in den Antworten der AWS-Mitarbeiter zu der zugehörigen Frage Cloudwatch , in der auch der Grund dafür aufgeführt ist:
[...] Im Moment müssen Sie nichts in Ihrem AMI bereitstellen, um Ihre Instanz zu überwachen. Für Metriken wie Speicherauslastung und Speicherplatz müssen wir uns das Betriebssystem ansehen, das in der Instanz ausgeführt wird. Aus diesem Grund verfügen wir nicht über diese wertvollen Metriken.
Wir suchen nach Möglichkeiten, um mehr Einblick in Ihr Betriebssystem und Ihre Anwendungen zu erhalten, und werden weitere Einzelheiten erfahren, wenn wir die Pläne konkretisieren.
Ich bezweifle, dass diese Funktionalität bald verfügbar sein wird, da die erforderliche plattformübergreifende Agentenfunktionalität bereits von einigen anderen Anbietern verfügbar ist, die dedizierte Überwachungslösungen anbieten, und diese Aufgabe alles andere als einfach ist - es wäre definitiv ein großer Gewinn Unterstützung dafür natürlich direkt in AWS eingebaut.
Hier ist eine bessere Version desselben Skripts, das die an eine Instanz angehängten Volumes abruft und die Verwendung jedes Volumes meldet.
Beachten Sie die Substitution von / dev / xvd für / dev / sd
Beachten Sie außerdem, dass Sie die ec2-api-Tools und Cloudwatch-Tools zusammen mit einem Zertifikat installieren müssen, damit diese funktionieren
#!/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
Ich habe ein Bash-Skript zusammengestellt, um dies mithilfe der benutzerdefinierten Cloudwatch-Metriken zu tun
http://aws.typepad.com/aws/2011/05/amazon-cloudwatch-user-defined-metrics.html
Ersetzen Sie XXXX durch Ihre eigenen Werte
#!/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
Wenn Sie dies in einen Cron-Job einfügen, erhalten Sie eine Metrik, auf die Sie Alarme setzen können. Ich entschied mich für Prozentsätze und instanzspezifische Einhängepunkte, anstatt das Volume selbst zu überwachen, da es meinen Anforderungen entsprach. Ich neige dazu, die Größe zu ändern und die Volumes mehr zu wechseln, als Instanzen neu zu starten. Ihr Kilometerstand kann variieren.
Unzufrieden mit den Beispielskripten von Amazon oder den verschiedenen Skripten von Drittanbietern, die ihre Perl-basierten Befehlszeilentools verwenden, haben wir unser eigenes Skript in Python geschrieben: aws-cloudwatch-linux -metrics .
Einzelne Datei, hat keine Abhängigkeiten und läuft auf jedem Python-Interpreter.
Es liest Daten direkt aus dem /proc
Dateisystem und meldet die Speicherplatzauslastung zusätzlich zu anderen Systemmetriken, die von außen nicht beobachtbar sind:
Diese Metriken werden sowohl in Bezug auf die Instanz-ID als auch in Bezug auf die Image-ID gemeldet.
Einige Zeit nachdem die Frage gestellt wurde, stellte AWS Skripten Optionen zur Verfügung, um die Datenträgernutzung zu melden.
Sie können dieses Skript in crontab ausführen, um CloudWatch verfügbaren Speicherplatz zu melden. Vergessen Sie nicht, den Festplattenpfad anzugeben.
*/5 * * * * ~/aws-scripts-mon/mon-put-instance-data.pl --disk-space-util --disk-path=/ --from-cron
Die Dokumente enthalten hier eine vollständige Liste der Optionen sowie ein Beispiel .