Learn

Monitoraggio di microservizi: introduzione a Prometheus e Grafana

12 Dicembre 2019 - 3 minuti di lettura
In questo articolo Carlo Ballabio fornirà una rapida scorsa degli strumenti Promethes e Grafana raccontandoci in ultimo il come e il perché ha adottato queste soluzioni.
In un sistema a microservizi con un forte flusso di acquisizione ed elaborazione dati diventa indispensabile avere strumenti per il monitoraggio delle prestazioni che permetta di conoscere, in tempo reale, lo stato di ogni singolo componente.
Una soluzione può essere adottare l’accoppiata Prometheus e Grafana.

Prometheus

Prometheus è un tool di monitoraggio e alerting che archivia metriche in un database proprietario di timeseries.

Una timeseries, o serie temporale, è una serie di data point indicizzati (o elencati o rappresentati in un grafico) in ordine temporale. Più comunemente, una serie temporale è una sequenza presa in punti successivi ugualmente distanziati nel tempo.

Comunemente sono tracciate tramite grafici a linee, e sono utilizzate in diversi ambiti (statistica, previsioni meteorologiche, elaborazione del segnale per citarne alcuni).
In gran parte le timeseries sono utilizzate in qualsiasi settore della scienza applicata e dell’ingegneria che coinvolge misurazioni temporali.
Tramite il linguaggio di query specifico PromQL, Prometheus Query Language, è possibile recuperare/aggregare i dati accumulati.

Il recupero delle metriche viene fatto in pull, ovvero sarà Prometheus stesso a contattare i singoli microservizi i quali non dovranno far altro che esporre la propria lista di metriche tramite REST. Ad oggi vengono fornite librerie per diversi linguaggi di programmazione per la scrittura nel formato corretto.
Per ulteriori approfondimenti, nel paragrafo Riferimenti trovate tutti i link necessari.

Grafana

Come poter visualizzare le metriche raccolte?
Grafana mette a disposizione un data source che permette di accedere in maniera semplice a tutti i dati immagazzinati da Prometheus.
Una volta collegati Prometheus e Grafana si possono creare delle query parametrizzabili e visualizzarne i risultati in comodi grafici mettendo in relazione fra loro le varie metriche.

Prometheus e Grafana: un caso d’uso

E’ utile fare utilizzo di questi due sistemi per monitorare in tempo reale il consumo di CPU/RAM di ogni singolo servizio di un’architettura a microservizi.
Non solo consumo di CPU e RAM, anche la quantità di dati elaborata, i lag (il tempo di scambio di dati che avviene in tempi troppo lunghi rispetto a quelli desiderati), il numero di elementi in cache, durata delle chiamate REST e durata di alcuni processi di elaborazione.
Tutti questi dati, messi in relazione tra loro, permettono di analizzare alcuni malfunzionamenti e risalire alla loro causa.

Alerting

E’ possibile impostare limiti per alcune metriche (ad esempio per i lag) superati i quali Prometheus invia notifiche o allarmi ad esempio tramite invio di email o messaggi su canali di Slack, uno dei tanti strumenti di collaborazione aziendale utilizzato per inviare messaggi in modo istantaneo ai membri del team.

Conclusioni

In questo articolo è stata data un’infarinatura di base sugli strumenti Prometheus e Grafana e perché è utile farne uso per monitorare le prestazioni di un sistema a microservizi.

Nel prossimo articolo vedremo come configurare un sistema con questi strumenti realizzando da zero un semplice progetto.

Articolo scritto da