Skip to content
Prometheus per misurare e monitorare applicazioni e infrastrutture.

Prometheus per misurare e monitorare applicazioni e infrastrutture.

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:

  1. Gli endpoint (sistemi o applicazioni) esportano metriche attraverso un endpoint HTTP in formato leggibile da Prometheus.
  2. Prometheus si connette periodicamente a questi endpoint e raccoglie i dati.
  3. 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.