Gli strumenti di monitoraggio e observability

triangolo

Monitoring e Observability: raccolta, comprensione e interpretazione dei dati

Per rendere efficiente la gestione degli applicativi è necessario utilizzare strumenti di monitoraggio e di observability. Questa è una best practice che permette di tenere sotto controllo gli eventi e implementare un sistema di alerting personalizzato, in modo da individuare tempestivamente eventuali errori e intervenire in tempi ristretti. La differenza tra monitoring e observability è oggetto di dibattito: c’è chi sostiene che sia un argomento più del marketing, altri invece ne sottolineano le differenze, specialmente quando si analizza il singolo strumento da implementare.

In generale, possiamo dire che gli strumenti di monitoraggio e observability hanno lo stesso obiettivo: tracciare, misurare e rendere disponibili i dati sulle performance degli applicativi. Il monitoring si concentra sulla raccolta di dati, mentre l’observability si concentra sulla comprensione e sull’interpretazione di tali dati per fornire una visione più completa del comportamento e delle prestazioni del sistema.

Nello specifico possiamo dire che questi strumenti registrano, analizzano ed esplicitano tre tipologie di dato: le metriche, i log e le tracce. 

  1. Le metriche sono dati numerici misurati nel tempo e danno una panoramica relativa allo stato dei sistemi, a prescindere che siano on-premises o in cloud. Le informazioni riguardano principalmente: l’utilizzo del disco e della CPU, il consumo di banda e della memoria;
  2. i log invece sono registrazioni degli eventi in una determinata data e ora: in questo modo possiamo ricostruire la sequenza degli eventi nell’intervallo di tempo desiderato e rilevare, ad esempio, la presenza di un errore;
  3. le tracce sono la rappresentazione di una serie di eventi correlati che si sono verificati in un sistema. Monitorare questo parametro, assume una rilevanza maggiore quando i nostri applicativi si basano su architetture a microservizi poiché sono proprio la rappresentazione del flusso end-to-end che attraversa l’insieme dei microservizi coinvolti in ciascuna operazione. In questo modo, lo sviluppatore non deve verificare ogni singolo microservizio per individuare quale componente presenta il colle di bottiglia, ma può dedicarsi immediatamente alla risoluzione del problema.

Sul mercato, sono diversi i progetti open source ed enterprise a disposizione degli sviluppatori.

Monitoring software e observability tool: le principali soluzioni sul mercato

Il software open source Prometheus è senz’altro uno dei più utilizzati per la raccolta e l’archiviazione delle metriche come dati di serie temporali.

Le caratteristiche principali di Prometheus sono:

  • un modello di dati multidimensionale con dati di serie temporali identificati dal nome della metrica e coppie chiave/valore;
  • PromQL, un linguaggio di query flessibile per sfruttare questa dimensionalità;
  • nessuna dipendenza dall’archiviazione distribuita; i singoli nodi server sono autonomi;
  • la raccolta delle serie temporali avviene tramite un modello pull su http;
  • il push delle serie temporali è supportato tramite un gateway intermedio;
  • gli obiettivi vengono rilevati tramite il rilevamento del servizio o la configurazione statica;
  • molteplici modalità di supporto grafico e dashboard.

Come funziona? Prometheus può estrarre le metriche da un processo target che le espone direttamente oppure, in caso di short job, è possibile avere un gateway intermedio che le riceve e, a sua volta, le espone e le rende disponibili. Memorizza localmente tutti i campioni prelevati ed esegue regole su questi dati per aggregare e registrare nuove serie temporali dai dati esistenti o generare avvisi. Grafana o altri consumatori di API possono essere utilizzati per visualizzare i dati raccolti.

Quando utilizzarlo? Prometheus funziona bene per registrare qualsiasi serie temporale puramente numerica. Si adatta sia al monitoraggio incentrato sulla macchina che al monitoraggio di architetture altamente dinamiche orientate ai servizi. In un mondo di microservizi, il suo supporto per la raccolta e l’interrogazione di dati multidimensionali è un punto di forza particolare.

Prometheus è progettato per l’affidabilità, per essere il sistema a cui rivolersi durante un’interruzione per consentire di diagnosticare rapidamente i problemi. Ogni server Prometheus è autonomo, non dipende dall’archiviazione di rete o da altri servizi remoti.

Per la visualizzazione dei dati e la creazione di dashboard, il più utilizzato è senz’altro Grafana. Grafana è una piattaforma di visualizzazione dei dati interattiva open source, sviluppata da Grafana Labs, che consente agli utenti di vedere i propri dati tramite diagrammi e grafici unificati in un’unica dashboard (o più dashboard!) per una più facile interpretazione e comprensione. È possibile interrogare e impostare avvisi sulle informazioni e metriche a prescindere dallo spazio di archiviazione, che si tratti di ambienti server tradizionali, cluster Kubernetes o vari servizi cloud, ecc. Analizzare i dati, identificare le tendenze e incoerenze e, in ultima analisi, rendere i processi più efficienti è molto più facile. Le dashboard sono inoltre condivisibili con altri membri del team, visualizzabili anche da mobile e condivisibili con la community.

Per l’elaborazione, ricerca e visualizzazione dei dati di log invece, un set di strumenti molto validi è quello composto da Elasticsearch, Logstash, Kibana (ELK stack). All’interno della suite, Elasticsearch si occupa di archiviare e l’indicizzare i dati di log; Longstash di elaborare e inviare i log e Kibana della visualizzazione di questi dati attraverso dashboard interattive. Con le architetture a microservizi e la containerizzazione delle applicazioni,  con sistemi distribuiti in cloud o cloud ibrido e, per giunta, con l’aumento della mole di dati, questi strumenti assumono maggior valore perché permettono agli sviluppatori di ottenere visibilità sugli applicativi e di lavorare su dati aggregati e significativi e con dashboard personalizzabili e “parlanti”.

 

Richiedi una consulenza