Jak uzyskać ilość wolnego miejsca na dysku dzięki CloudWatch?

11

Czy można uzyskać ilość wolnego miejsca na dysku (df) dzięki CloudWatch? Jeśli tak, to jakie dane reprezentują wolne miejsce na dysku?

Jan Deinhard
źródło

Odpowiedzi:

7

Aktualizacja

Tymczasem AWS udostępnia własne przykładowe skrypty do monitorowania użycia pamięci i miejsca na dysku w instancjach Amazon EC2 z systemem Linux przynajmniej, zobacz Nowe skrypty monitorowania Amazon CloudWatch :

Możesz uruchamiać te skrypty w swoich instancjach i konfigurować je tak, aby raportowały dane o zużyciu pamięci i miejsca na dysku do Amazon CloudWatch. Po przesłaniu danych do CloudWatch możesz przeglądać wykresy, obliczać statystyki i ustawiać alarmy w nich w konsoli CloudWatch lub poprzez interfejs API CloudWatch .

[...]

Aby dowiedzieć się więcej na temat korzystania ze skryptów, w tym instalacji, konfiguracji i konfiguracji, odwiedź „ Amazon CloudWatch Monitoring Scripts for Linux ” w Amazon CloudWatch Developer Guide.

Należy jednak pamiętać, że wiele popularnych zewnętrznych rozwiązań monitorujących już udostępnia odpowiednie próbki lub pełnoprawne rozwiązania do monitorowania wykorzystania pamięci i miejsca na dysku, więc zwykle nie trzeba wymyślać koła na nowo. Dostarczone przez AWS skrypty są jednak całkiem przyzwoite i obszerne, tzn. Obejmują bardziej szczegółowy przypadek użycia niż większość niestandardowych skryptów jednorazowych.


Pierwsza odpowiedź

Nie, nie jest to jeszcze możliwe. Zobacz odpowiedzi pracowników AWS na powiązane pytanie chmurowe dotyczące zużycia pamięci , które obejmuje również powód:

[...] W tej chwili nie musisz niczego instalować w swoim interfejsie AMI, aby monitorować instancję. Wskaźniki takie jak wykorzystanie pamięci i miejsce na dysku wymagają od nas spojrzenia na system operacyjny działający w instancji i dlatego nie mamy tych cennych wskaźników.

Szukamy sposobów, aby zapewnić lepszy wgląd w system operacyjny i aplikacje, i będziemy mieli więcej szczegółów w miarę opracowywania planów.

Wątpię, aby ta funkcja pojawiła się w najbliższym czasie, ponieważ wymagana funkcjonalność międzyplatformowego agenta jest łatwo dostępna od kilku innych dostawców oferujących już dedykowane rozwiązania monitorujące, a to zadanie jest prawie proste - z pewnością ogromną wygraną byłoby mieć oczywiście wsparcie dla tego wbudowanego w AWS.

Steffen Opel
źródło
„Chociaż to nie zmienia tego, co powiedziano w mojej pierwotnej odpowiedzi ...” - twoja pierwotna odpowiedź mówiła, że ​​AWS nie może zgłosić użycia dysku, ale teraz skrypty AWS zgłaszają użycie dysku. Tak więc odpowiedź na pytanie PO uległa zmianie.
steampowered
3

Oto lepsza wersja tego samego skryptu, który pobiera woluminy dołączone do instancji i raportuje użycie każdego woluminu.

zwróć uwagę na zastąpienie / dev / xvd dla / dev / sd

Zwróć też uwagę, że potrzebujesz narzędzi ec2-API i Cloudwatch zainstalowanych wraz z certyfikatem, aby działały

#!/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
źródło
2

Przygotowałem skrypt bash, aby to zrobić, korzystając z niestandardowych wskaźników Cloudwatch

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

zastąp XXXX własnymi wartościami

#!/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

włóż to do zadania crona, a będziesz mieć metrykę, w której możesz włączyć alarmy. Postanowiłem zastosować wartości procentowe i punkty montowania specyficzne dla instancji zamiast monitorować sam wolumin, ponieważ odpowiada on moim potrzebom. Zwykle zmieniam rozmiar i zmieniam woluminy bardziej niż restartuję instancje. Twój przebieg może się różnić.

marstonstudio
źródło
1

Niezadowoleni z przykładowych skryptów Amazon lub różnych skryptów innych firm korzystających z narzędzi wiersza polecenia opartych na Perlu, napisaliśmy własny skrypt w języku Python: aws-cloudwatch-linux-metrics .

Pojedynczy plik, nie ma zależności i działa na dowolnym interpreterze Python.

Odczytuje dane bezpośrednio z /procsystemu plików i raportuje wykorzystanie miejsca na dysku oprócz innych wskaźników systemu, których nie można zaobserwować z zewnątrz:

  • Średnie obciążenie procesora
  • Połączenia sieciowe (TCP i UDP)
  • Wykorzystanie miejsca na dysku
  • Wykorzystanie pamięci

Raportuje te metryki zarówno w odniesieniu do identyfikatora instancji, jak i identyfikatora obrazu.

malthe
źródło
Cześć, twój projekt github zniknął
Roco CTZ
0

Jakiś czas po zadaniu pytania AWS udostępniło skrypty z opcjami raportowania użycia dysku.

Możesz uruchomić ten skrypt w crontab, aby zgłosić dostępną przestrzeń dyskową do CloudWatch. Nie zapomnij podać ścieżki dysku.

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

Dokumenty zawierają pełną listę opcji oraz przykład tutaj .

steampowered
źródło