Amazon CloudWatch per monitorare le risorse su AWS
da Massimo Della Rovere · pubblicato il 27 maggio, 2014 · modificato il 15 luglio, 2016

Il servizio di Amazon CloudWatch permette il monitoring e il controllo delle risorse utilizzate da molti servizi AWS che possono aiutare a capire problemi di performance e/o le risorse necessarie al funzionamento delle nostre applicazioni. È possibile monitorare molti indicatori già predefiniti o creare degli indicatori personalizzati che possono colloquiare con il servizio di Amazon CloudWatch tramite le chiamate API.

Ad esempio possiamo controllare il livello di CPU utilizzato dalle istanze EC2, il numero delle operazioni effettuate sui nostri dischi EBS, la quantità del trasferimento dati, eventuali errori hardware della nostra istanza virtuale, etc etc. Come vedremo più tardi oltre a visualizzare le statistiche riferite a questi valori potremo anche creare degli allarmi che tramite il servizio Amazon SNS possono generare diversi messaggi.

Introduzione

Per usare il servizio di Amazon CloudWatch basta accedere alla management console e selezionare il menu dedicato al servizio, in questa pagina troverete due sezioni, una per le metriche e l’altra per gli allarmi. Nelle metriche saranno presenti tutte le statistiche raccolte che riguardano i servizi che stiamo utilizzando, negli allarmi invece sarà possibile definire delle soglie che una volta raggiunte emettano delle notifiche.

Le statistiche presenti su CloudWatch vengono memorizzate usando delle serie che contengono il valore medio riferito a 5 minuti di tempo, se vogliamo abbassare questo tempo ad un minuto bisogna attivare il monitoring avanzato il quale renderà il servizio a pagamento secondo la classica regola degli Amazon AWS e del “pay to use”.

I servizi predisposti al monitoraggio sono molti, ad esempio Amazon EC2, DynamoDB, EBS, ElastiCache, RDS, Elastic MapReduce, Redshift etc, etc. Ovviamente non possiamo vedere le metriche di tutti quanti in un singolo articolo ma cercheremo di analizzare almeno i servizi più conosciuti come Amazon EC2 e Amazon EBS.

Metriche EC2

Una volta che avviamo un’istanza EC2 il sistema di Amazon comincerà immediatamente a raccogliere i dati che riguardano le metriche della nostra istanza, la serie statistica conterrà una media di 5 minuti o di un minuto a seconda se abbiamo selezionato la voce chiamata “Monitoring” durante l’avvio dell’istanza stessa. Una volta che sono state raccolte informazioni sufficienti per fare un’analisi possiamo visualizzare le statistiche in due maniere differenti, la prima è quella di entrare nel servizio CloudWatch e cercare l’istanza e la metrica da analizzare, l’altra è quella di andare nella sezione di EC2 e selezionare l’istanza che desideriamo e vedere la parte riguardante le informazioni.

Amazon Cloudwatch

Qui di seguito trovate l’elenco delle metriche presenti nella schermata di esempio e più precisamente nel tab chiamato Monitoring. Il range presentato nei grafici può essere selezionato tramite il selettore che trovate in alto a destra, per default è l’ultima ora.

CPU utilization: in questo grafico troviamo l’utilizzo di CPU della nostra istanza nel periodo selezionato, il range permesso è una percentuale da 0 a 100%. Normalmente si considera l’istanza a rischio di scalabilità per valori ripetitivi al di sopra del 90%.

Disks: qui troviamo sia i valori di lettura che di scrittura che riguardano i dischi interni legati all’istanza, se usate solo EBS questi valori saranno sempre a zero e dovrete andare ad analizzare le statistiche dedicate proprio ad EBS (Elastic Block Store).

Network: numero di byte ricevuti o spediti alle interfacce di networking collegate alla nostra istanza. Questa metrica identifica il volume di traffico sia in entrata che in uscita rispetto alla singola istanza e all’applicazione ospitata.

Status Check: una combinazione di check failed instance o check failed system che indicano se ci sono stati dei problemi strutturali nella nostra istanza. Il valore indicato può essere uno 0 quando il controllo è passato e un 1 quando il controllo è fallito.

Allarmi EC2

Tutte le metriche che abbiamo visto nel paragrafo precedente possono essere utilizzate anche per generare degli allarmi in base a delle soglie che possiamo configurare. Per creare un’allarme basta andare nella management console, selezionare la pagina del servizio e attivare il bottone “create alarm“. A questo punto se selezionate la metrica che vi interessa e l’istanza EC2 collegata vi dovrebbe comparire qualcosa di simile:

Amazon Cloudwatch

Scegliete un nome e una descrizione per riconoscere l’allarme e selezionate la soglia che deve essere verificata, indicate anche il numero di volte consecutive che si necessitano per far scattare la notifica dell’allarme (azione).  Potete scegliere l’azione più semplice che provvede a spedire una mail ad un vostro indirizzo di posta elettronica o aggiungere delle azioni collegate alla funzione di “Auto Scaling” e al servizio EC2.

Stato allarme

Come avrete notato nella schermata visualizzata prima della creazione dell’allarme e più precisamente nella sidebar di sinistra, gli allarmi vengono suddivisi tramite uno stato di OK, Alarm, Insufficient e Billing. Nella sezione OK ci sono tutti gli allarmi che stanno funzionando correttamente ma che non hanno raggiunto nessuna soglia di particolare attenzione, in Alarm invece troviamo tutti gli allarmi che hanno raggiunto le soglie e quindi generato un’azione, in Insufficient vengono memorizzati tutti gli allarmi che non hanno sufficienti dati da essere analizzati e per ultimo troviamo il Billing che possiamo attivare per ricevere una notifica quando i costi mensili del nostro account sorpassano una certa soglia, come ad esempio un valore di 200$.

Metriche EBS

Come abbiamo visto precedentemente se utilizziamo i dischi EBS con la nostra istanza non troviamo le statistiche di utilizzo in ambiente Amazon EC2 ma dobbiamo cercarle nella sezione specifica di EBS (Elastic Block Store). Come per le istanze possiamo visualizzare questi dati sia sulla pagina di CloudWatch che quella dedicata ai volumi:

Amazon Cloudwatch

Qui di seguito trovate l’elenco delle metriche presenti nella schermata di esempio e più precisamente nel tab chiamato Monitoring. Il range presentato nei grafici può essere selezionato tramite il selettore che trovate in alto a destra, per default è l’ultima ora.

Bandwidth: il numero totale dei byte trasferiti per un determinato periodo. I dati vengono raccolti solo quando il disco è attivo e collegato ad un’istanza EC2 valida.

Throughput: in questo valore trovate la media delle operazioni di I/O per secondo in riferimento all’unità di tempo visualizzata che può essere di 5 o un minuto. Mettendo questo parametro in relazione con il Bandwidth è possibile calcolare la media di occupazione in byte in riferimento ad una singola operazione di I/O.

Queue Length: numero di operazioni in lettura e scrittura che hanno necessitato di un’accodamento prima di essere eseguite. Questo valore è molto importante per controllare le performance generali del servizio e vedere se aumentare la sua capacità.

Average Size: viene indicata sia per la parte di lettura che per quella di scrittura la media della dimensione espressa in byte in riferimento al numero delle operazioni totali e al valore che riguarda il volume di trasferimento, sempre nel tempo indicato.

Average Latency: in questo valore viene indicata la media che riguarda la latenza generale dei dischi nel periodo di tempo specificato. Il valore del grafico viene indicato come il numero delle operazioni totali per millisecondo.

Metriche personalizzate

Sicuramente molti di voi avranno notato che non esiste una metrica collegata all’utilizzo della RAM, questo è dovuto al fatto che l’occupazione della RAM, la suddivisione e l’utilizzo degli SWAP avvengono a livello di sistema operativo e non possono essere controllati a livello hardware. Quindi in questi casi bisogna creare degli script sul proprio server che spediscano le informazioni raccolte al servizio di Amazon CloudWatch tramite le API messe a disposizione.

Se volete approfondire questo aspetto potete scaricare liberamente uno script di esempio dal sito ufficiale http://aws.amazon.com/code/8720044071969977. Come potrete vedere vengono calcolate diverse metriche sulla RAM che potrebbero essere utili da monitorizzare su CloudWatch e per creare degli allarmi su soglie predefinite.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi