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!
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.
Una metrica è un dato numerico associato a un timestamp, la marca temporale che indica una particolare caratteristica di un sistema. Le metriche possono includere:
Prometheus utilizza l'approccio HTTP Pull per cui:
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.
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.
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.
Grazie a Prometheus è possibile:
Particolarmente utilizzato in ambienti cloud native e DevOps, Prometheus presenta molteplici vantaggi per le aziende. Tra i principali:
Se desideri migliorare il monitoraggio e le prestazioni dei tuoi sistemi con Prometheus, non esitare a contattarci.