Che cos'è il monitoraggio di AWS Lambda?
AWS Lambda è un servizio di serverless computing fornito da Amazon Web Services. Consente di eseguire codice, da semplici funzioni a intere applicazioni, senza dover fornire e gestire server. Il monitoraggio di AWS Lambda è il ramo del monitoraggio del cloud AWS che si occupa di garantire che il codice AWS Lambda venga eseguito senza problemi e intoppi.
AWS Lambda è un ecosistema complesso che supporta molti casi d'uso. Viene utilizzato per eseguire codice arbitrario scritto in molti linguaggi, da JavaScript a Go, da Python a Ruby, C# e Rust, solo per citarne alcuni. Le funzioni AWS Lambda possono essere utilizzate per molti scopi: esecuzione di siti web, applicazioni mobili, analisi dei dati, elaborazione di file e molti altri scenari di utilizzo.
Si tratta di elementi critici dell'infrastruttura di un'azienda ed è quindi importante assicurarsi che questi carichi di lavoro siano efficienti e sani, seguendo le migliori pratiche di monitoraggio di AWS Lambda. Il monitoraggio delle applicazioni AWS Lambda può anche aiutare a rilevare problemi di prestazioni, interruzioni ed errori nei carichi di lavoro.
Quali sono le metriche di AWS Lambda da monitorare?
Per impostazione predefinita, le metriche di AWS Lambda sono esposte ad Amazon CloudWatch, lo strumento di monitoraggio centrale che integra le metriche di tutti i servizi e le risorse cloud AWS. Queste metriche sono gratuite, a differenza delle altre funzionalità di AWS Lambda. Le metriche di Lambda vengono inviate a CloudWatch ogni volta che una funzione termina l'elaborazione di un evento.
Il monitoraggio di Lambda può essere effettuato semplicemente impostando una dashboard su CloudWatch e controllando le metriche per tutto il codice su AWS Lambda o utilizzando uno strumento di monitoraggio AWS Lambda di terze parti che supporti le metriche a cui si è interessati. Esistono alcuni tipi di metriche Lambda, raggruppate in 4 categorie: Invocation, Performance, Concurrency e Asynchronous invocation.
Metriche di invocation di AWS Lambda
Le metriche di invocation sono indicatori dell'esito delle funzioni Lambda. Le principali metriche da monitorare sono il numero totale di invocation della funzione, il numero di errori restituiti, i fallimenti di consegna della destinazione (il numero di volte in cui AWS Lambda ha tentato di inviare un evento a una destinazione, ma non è riuscito), il numero di throttle dell'invocazione e il numero di occorrenze di invocazioni ricorsive abbandonate, segno che la funzione potrebbe far parte di un ciclo ricorsivo infinito. Queste metriche di Lambda sono quelle di base per verificare come vengono eseguite le funzioni e se incontrano problemi di qualsiasi tipo.
Metriche delle performance di AWS Lambda
Le performance metriche di AWS Lambda forniscono dettagli sulle prestazioni di una singola invocazione di funzione. Per avere un'idea di quanto siano performanti le tue funzioni, controlla la metrica della durata, la durata delle estensioni post runtime, che ti dirà il tempo trascorso nell'elaborazione di un evento. Alcune fonti di eventi attivano anche la creazione delle metriche iterator age e offset lag Lambda. La prima riguarda le funzioni collegate ai database di Amazon, come DocumentDB, DynamoDB e Kinesis. Calcola il tempo che intercorre tra la ricezione del record da parte di uno stream e l'invio dell'evento alla funzione da parte della mappatura della sorgente dell'evento. La metrica offset lag è invece per le fonti di eventi Apache Kafka autogestite e registra l'offset tra l'ultimo record scritto e l'ultimo evento elaborato dalla funzione.
Metriche di concurrency di AWS Lambda
Il monitoraggio di AWS Lambda spesso implica molte funzioni e servizi di concurrency. Le metriche di AWS Lambda nella categoria Concurrency includono metriche come le esecuzioni non riservate e concorrenti, il numero di istanze della funzione che elaborano eventi. Le esecuzioni concomitanti e l'utilizzo provvisto informano invece sul numero di istanze di funzione che utilizzano la concurrency provvisoria e sul loro valore di utilizzo.
Metriche di asynchronous invocation di AWS Lambda
Nel caso di asynchronous invocation, le funzioni AWS Lambda esportano solo 3 metriche. Si tratta del numero di eventi ricevuti, quelli che vengono accodati con successo per l'elaborazione, del numero di eventi abbandonati, quelli che invece sono stati abbandonati, e dell'età dell'evento asincrono, il tempo che intercorre tra l'accodamento e il successo dell'invocazione della relativa funzione.
Queste sono le metriche del monitoraggio di Lambda utili per comprendere le prestazioni complessive delle risorse AWS Lambda.
Best practice per il monitoraggio di AWS Lambda
Anche se non sarebbe sbagliato monitorare tutte le metriche sopra citate, non è strettamente necessario. Né è necessario in tutti i casi di utilizzo di AWS Lambda. Una delle principali best practice di monitoraggio di AWS Lambda da seguire è quella di concentrarsi sulle metriche che contano per voi e che si applicano al modo in cui utilizzate la potenza delle funzioni AWS Lambda. Inoltre, bisogna evitare di essere sommersi dai dati, rendendo più difficile discernere ciò che è importante e ciò che può essere ignorato.
Una pratica importante da seguire è sicuramente quella di controllare i log di AWS Lambda. Questi vengono inviati a CloudWatch o possono essere consultati attraverso la Lambda Console, la CLI di AWS o con l'API di CloudWatch resa disponibile esternamente, allo strumento di monitoraggio di AWS Lambda scelto. È bene tenere presente che i log di AWS Lambda non vengono creati in tempo reale, ma possono essere necessari da 5 a 10 minuti per essere visualizzati dopo l'invocazione di una funzione.
Il monitoraggio di AWS Lambda richiede l'impostazione di un sistema di allarme o di notifica adeguato, come in tutti gli altri tipi di monitoraggio. Gli allarmi di CloudWatch o le notifiche personalizzate nello strumento di monitoraggio di AWS Lambda in uso, come Checkmk, sono fondamentali per essere informati tempestivamente delle metriche che raggiungono una soglia e sapere quando è necessario intervenire.
Uno strumento utile di Amazon per contenere i costi di AWS Lambda è Cost Anomaly Detection. È una best practice di monitoraggio di AWS Lambda avere un sistema per controllare e identificare i costi e le opportunità per ridurli. Cost Anomaly Detection può essere utile, ma meglio di esso è Checkmk, che può fornire una panoramica dei costi per servizio AWS o per account, avvisandoti quando ti stai avvicinando ai limiti predefiniti.
Il monitoraggio di AWS Lambda è un insieme complesso di sforzi per mantenere l'efficienza delle vostre funzioni serverless. Tenerne traccia, probabilmente centinaia o migliaia, è un compito impossibile da lasciare solo agli amministratori del cloud. Un buon strumento di monitoraggio Lambda con funzionalità avanzate, come Checkmk, è fondamentale per ottenere la massima osservabilità e automazione in una configurazione del cloud AWS. Checkmk può aiutare gli amministratori a identificare problemi, aree di miglioramento, errori e a contenere i costi di AWS.
FAQ
AWS Lambda alloca la potenza della CPU in proporzione alla memoria configurata. Per impostazione predefinita, le funzioni AWS Lambda hanno 128 MB di memoria allocata. La dimensione massima della memoria di ogni funzione è di 10 GB.
AWS Lambda e Fargate sono entrambe tecnologie serverless per eseguire codice e applicazioni sul cloud di Amazon. Lambda esegue codice e applicazioni, mentre Fargate è specifico per i container, rientrando nella categoria delle offerte CaaS (Containers as a Service). Lambda e Fargate non sono quindi alternative dirette, ma una viene utilizzata rispetto all'altra a seconda che si debbano eseguire piccoli frammenti di codice o grandi applicazioni, e l'altra quando si implementano i container nella propria infrastruttura.