Come ottenere la quantità di spazio libero su disco con CloudWatch?


11

È possibile ottenere la quantità di spazio libero su disco (df) con CloudWatch? In tal caso, quale metrica rappresenta lo spazio libero su disco?

Risposte:


7

Aggiornare

Nel frattempo AWS fornisce i propri script di esempio per il monitoraggio dell'utilizzo della memoria e dello spazio su disco nelle istanze Amazon EC2 che eseguono almeno Linux , vedere Nuovi script di monitoraggio Amazon CloudWatch :

Puoi eseguire questi script sulle tue istanze e configurarli per segnalare le metriche di utilizzo della memoria e dello spazio su disco ad Amazon CloudWatch. Dopo aver inviato le metriche a CloudWatch, è possibile visualizzare grafici, calcolare statistiche e impostare allarmi su di essi nella console CloudWatch o tramite l' API CloudWatch .

[...]

Per ulteriori informazioni su come utilizzare gli script, inclusi installazione, installazione e configurazione, visitare " Script di monitoraggio Amazon CloudWatch per Linux " nella Guida per sviluppatori Amazon CloudWatch.

Si noti, tuttavia, che molte popolari soluzioni di monitoraggio di terze parti forniscono rispettivi campioni o soluzioni complete per il monitoraggio dell'utilizzo della memoria e dello spazio su disco, quindi di solito non è necessario reinventare la ruota. Gli script forniti da AWS sono abbastanza decenti ed estesi, tuttavia, ovvero coprono il caso d'uso in modo più approfondito rispetto alla maggior parte degli script personalizzati che fluttuano intorno.


Risposta iniziale

No, questo non è possibile (ancora). Vedi le risposte dello staff di AWS sulla relativa domanda cloudwatch per l'utilizzo della memoria , che copre anche il motivo:

[...] In questo momento, non è necessario distribuire nulla nella tua AMI per monitorare la tua istanza. Metriche come l'utilizzo della memoria e lo spazio su disco ci richiedono di esaminare il sistema operativo in esecuzione nell'istanza ed è per questo che non abbiamo queste metriche preziose.

Stiamo cercando modi per fornire maggiori informazioni sul tuo sistema operativo e applicazioni e avremo maggiori dettagli man mano che stabiliamo i piani.

Dubito che questa funzionalità emergerà presto, tuttavia, poiché la funzionalità agente multipiattaforma richiesta è prontamente disponibile da un paio di altri fornitori che offrono già soluzioni di monitoraggio dedicate, e questo compito è quasi semplice: sarebbe sicuramente una grande vittoria avere supporto per questo integrato direttamente in AWS, ovviamente.


"Mentre questo non cambia ciò che è stato affermato nella mia risposta iniziale ..." - la tua risposta originale diceva che AWS non poteva segnalare l'utilizzo del disco, ma ora gli script AWS segnalano l'utilizzo del disco. Quindi la risposta alla domanda del PO è cambiata.
potenziato a vapore il

3

Ecco una versione migliore dello stesso script che recupera i volumi collegati a un'istanza e segnala l'utilizzo di ciascun volume.

notare la sottostazione di / dev / xvd per / dev / sd

si noti inoltre che sono necessari gli strumenti ec2-api e gli strumenti cloudwatch installati insieme a un certificato per farli funzionare

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

Ho messo insieme uno script bash per farlo usando le metriche cloudwatch personalizzate

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

sostituisci XXXX con i tuoi valori

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

mettilo in un lavoro cron e avrai una metrica su cui puoi mettere in allarme. Ho deciso di utilizzare percentuali e punti di montaggio specifici dell'istanza invece di monitorare il volume stesso perché si adattava alle mie esigenze. Tendo a ridimensionare e cambiare volume più di quanto sto riavviando istanze. Il tuo chilometraggio può variare.


1

Insoddisfatto degli script di esempio di Amazon o dei vari script di terze parti che utilizzano i loro strumenti da riga di comando basati su Perl, abbiamo scritto il nostro script in Python: aws-cloudwatch-linux-metrics .

Singolo file, non ha dipendenze e funziona su qualsiasi interprete Python.

Legge i dati direttamente dal /procfilesystem e riporta l' utilizzo dello spazio su disco oltre ad altre metriche di sistema che non sono osservabili dall'esterno:

  • Carico medio della CPU
  • Connessioni di rete (TCP e UDP)
  • Utilizzo dello spazio su disco
  • Utilizzo della memoria

Riporta queste metriche sia rispetto all'ID istanza che all'ID immagine.


Ciao, il tuo progetto github è sparito
Roco CTZ

0

Qualche tempo dopo la domanda, AWS ha fornito agli script le opzioni per segnalare l'utilizzo del disco.

È possibile eseguire questo script in crontab per segnalare lo spazio su disco disponibile a CloudWatch. Non dimenticare di includere il percorso del disco.

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

I documenti forniscono un elenco completo di opzioni più un esempio qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.