Wie erhalte ich mit CloudWatch den freien Speicherplatz?


Antworten:


7

Aktualisieren

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.


Erste Antwort

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.


"Dies ändert zwar nichts an dem, was in meiner ersten Antwort angegeben wurde ..." - Ihre ursprüngliche Antwort besagte, dass AWS die Festplattennutzung nicht melden konnte, aber jetzt melden die AWS-Skripte die Festplattennutzung. Die Antwort auf die OP-Frage hat sich also geändert.
Steampowered

3

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

2

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.


1

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 /procDateisystem und meldet die Speicherplatzauslastung zusätzlich zu anderen Systemmetriken, die von außen nicht beobachtbar sind:

  • CPU-Last durchschnittlich
  • Netzwerkverbindungen (TCP und UDP)
  • Speicherplatzauslastung
  • Speicherauslastung

Diese Metriken werden sowohl in Bezug auf die Instanz-ID als auch in Bezug auf die Image-ID gemeldet.


Hallo, dein Github-Projekt ist weg
Roco CTZ

0

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 .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.