Ogni sistema di produzione ha bisogno di essere monitorato.
Conoscere ciò che accade man mano che lo sviluppo va avanti aiuta a risolvere problemi per tempo, ad anticipare criticità ulteriori che potrebbero verificarsi e a tenere sott’occhio i parametri che contano in base a ciò su cui si sta lavorando, che sia un’app, un’infrastruttura, servizi digitali.
In passato il monitoraggio delle applicazioni basate su workload tradizionali (virtual machine e architetture software monolitiche) richiedeva strumenti di monitoring più semplici e con meno capacità lato discovery. Con l’avvento dei microservizi e orchestratori come Kubernetes, invece, le architetture del software sono diventate più complesse e, di conseguenza, anche il modo in cui devono essere monitorate è cambiato, pod per pod!
Gestire la complessità con Prometheus
Prometheus è un sistema di monitoraggio open source basato su metriche nato per tenere sotto controllo i sistemi di produzione e gestire la complessità degli ambienti. Analizza il comportamento, lo stato o le prestazioni di un sistema e permette di selezionare e aggregare i dati in tempo reale per generare alert in caso di anomalie.
Per definire delle regole si utilizza il linguaggio di query funzionale: Prometheus Query Language, chiamato PromQL. Ad esempio, si possono impostare delle soglie per l'utilizzo di CPU o di memoria, o per il numero di errori di un'applicazione.
La funzione delle metriche in Prometheus
Una metrica è un dato numerico associato a un timestamp, la marca temporale che indica una particolare caratteristica di un sistema. Le metriche possono includere:
- Prestazioni, come il tempo di risposta di un'applicazione.
- Utilizzo delle risorse, come la percentuale di CPU o la memoria utilizzate.
- Affidabilità, come il numero di errori in un determinato periodo.
- Capacità, come il numero di richieste gestite da un server o da un'applicazione.
Prometheus utilizza l'approccio HTTP Pull per cui:
- Gli endpoint (sistemi o applicazioni) esportano metriche attraverso un endpoint HTTP in formato leggibile da Prometheus.
- Prometheus si connette periodicamente a questi endpoint e raccoglie i dati.
- Le metriche raccolte vengono salvate nel database di serie temporali di Prometheus per l’analisi.
La definizione e la selezione delle metriche sono fondamentali per evitare confusione e rendere più semplice l'individuazione di quali criticità potrebbero compromettere davvero un sistema.
Per evitare di "monitorare troppo", è importante quindi definire delle regole e degli alert che si concentrino sulle metriche più rilevanti.
Per ottenere metriche da applicativi in un formato compatibile con Prometheus, è possibile utilizzare gli “exporter”. Si tratta di strumenti sviluppati dalla community che consentono di raccogliere ed esporre metriche da una vasta gamma di sistemi operativi, applicazioni e servizi.
Per raccogliere metriche di business è possibile sviluppare exporter personalizzati. Ad esempio, un'azienda potrebbe voler monitorare il numero di biglietti venduti.
Toolchain open source basata su standard OpenMetrics
Sviluppato nel 2012 da SoundCloud, dal 2016 Prometheus è un progetto open source indipendente scritto in Go. Entrato di diritto a far parte della Cloud Native Computing Foundation (CNCF) come progetto “graduated”, è secondo per importanza solo a Kubernetes. Prometheus si basa sullo standard OpenMetrics, un formato standard per l'esposizione di metriche che ne facilita l'integrazione con altri sistemi e altre applicazioni.
L’integrazione di Prometheus con Alertmanager e Grafana
Prometheus non ha la capacità di inoltrare gli allarmi, ma può interagire con altri tool come Alertmanager e Grafana.
Alertmanager è uno strumento che gestisce la distribuzione degli alert verso diverse destinazioni, come email, piattaforme di chat (es. Slack, Microsoft Teams) o altri sistemi di notifica. Grazie a questa integrazione, è possibile definire regole di alerting avanzate che permettono di informare tempestivamente i team tecnici quando si verificano anomalie o problemi.
Grafana, invece, è uno degli strumenti più popolari per la creazione di dashboard interattive e personalizzate. Consente di visualizzare in modo chiaro e intuitivo le metriche raccolte da Prometheus con grafici, tabelle e pannelli dinamici che aiutano a monitorare in tempo reale lo stato dei sistemi. Anche se Grafana dispone di un proprio sistema di monitoraggio, Prometheus è spesso utilizzato come principale data source.
Mentre Grafana ha una versione Enterprise, Prometheus è un progetto open source puro, con licenza Apache 2.0. Questo significa che può essere utilizzato anche per attività commerciali senza dover pagare una licenza. Questo è un argomento al quale le aziende sono molto sensibili: i costi! Impostare e gestire adeguatamente Prometheus permette di avere un sistema di monitoraggio altamente affidabile e flessibile più conveniente rispetto a soluzioni SaaS che possono avere costi elevati, soprattutto per sistemi complessi con un alto numero di metriche. Inoltre Alertmanager e Prometheus possono essere facilmente configurati in modalità High Availability (HA) anche in ambienti on-prem per garantire continuità e resilienza del sistema di monitoraggio.
È importante ricordare che, come previsto dalla licenza Apache 2.0, il lavoro svolto con Prometheus è protetto da regole specifiche, che includono il rispetto del copyright e la citazione dell'autore originale. Questo per garantire trasparenza e che sia riconosciuto il lavoro di chi sviluppa.
Perché Prometheus è utile
Grazie a Prometheus è possibile:
- Monitorare un sistema in tempo reale:
Rileva tempestivamente problemi e consente quindi di intervenire prima che si verifichino guasti critici. - Risolvere problemi tempestivamente
Analizza i dati raccolti per identificare rapidamente la causa principale di eventuali malfunzionamenti. - Prevenire i downtime
Riduce al minimo i tempi di inattività grazie agli alert configurabili. - Anticipare possibili criticità
Analizza i trend storici, aiuta a pianificare l’espansione delle risorse e a prevenire sovraccarichi futuri.
Vantaggi
Particolarmente utilizzato in ambienti cloud native e DevOps, Prometheus presenta molteplici vantaggi per le aziende. Tra i principali:
- Flessibilità e personalizzazione
Le configurazioni possono essere adattate alle esigenze specifiche dei clienti. - Zero costi di licenza
Essendo gratuito e open source, consente di ridurre i costi operativi, offrendo al contempo una piattaforma di monitoraggio di alto livello. - Integrazione con altri strumenti
Prometheus si integra perfettamente con tecnologie DevOps e strumenti CI/CD - Affidabilità dei sistemi
Grazie al l monitoraggio in tempo reale e gli alert configurabili, è possibile identificare e risolvere rapidamente i problemi - Facilità di implementazione
Prometheus può essere facilmente implementato nelle infrastrutture dei clienti.
Se desideri migliorare il monitoraggio e le prestazioni dei tuoi sistemi con Prometheus, non esitare a contattarci.