Prometheus è un set di strumenti di avviso e monitoraggio open source la cui popolarità è aumentata di pari passo alla crescita di Kubernetes. Sviluppato in origine da SoundCloud, Prometheus affonda le radici in un progetto di monitoraggio di Google chiamato Borgmon.
Prometheus è il principale sostenitore della raccolta di metriche dalle applicazioni e dall'infrastruttura utilizzando un modello basato su pull. Ciò significa che Prometheus invia periodicamente una richiesta ai tuoi target e le metriche raccolte vengono quindi archiviate in un database di serie temporali. Nelle istanze di Prometheus autogestite, sei tu a fornire l'infrastruttura per raccogliere, archiviare ed eseguire query sulle metriche. Nelle versioni gestite di Prometheus, un fornitore fornisce l'intera infrastruttura e un accordo sul livello del servizio (SLA) per garantire il tempo di attività del servizio.
Prometheus fornisce un linguaggio di query chiamato PromQL per eseguire query sui dati delle serie temporali. Esistono molti progetti che sfruttano PromQL, tra cui Grafana e Alertmanager, per aiutare con attività analitiche e operative come la visualizzazione dei dati, la creazione di avvisi e la scalabilità dell'infrastruttura di monitoraggio.
Prometheus viene utilizzato per raccogliere metriche dalle applicazioni e dall'infrastruttura. Queste metriche possono essere utilizzate per monitorare lo stato dei sistemi, identificare potenziali problemi e risolverli.
Ecco alcuni dei vantaggi specifici dell'utilizzo di Prometheus:
Prometheus utilizza un modello pull per raccogliere metriche, il che significa che il server Prometheus esegue il polling dei sistemi o delle applicazioni che sta monitorando per verificarne le metriche, a differenza del modello push, utilizzato da molti altri sistemi di monitoraggio, in cui il codice dell'applicazione viene modificato per inviare periodicamente le metriche al server.
Il modello pull non richiede che i sistemi o le applicazioni monitorati siano a conoscenza del server Prometheus, che quindi può essere aggiunto a un sistema di monitoraggio senza apportare modifiche al codice dell'applicazione. Il modello pull raccoglie le metriche solo quando sono necessarie, quindi Prometheus non spreca risorse raccogliendo metriche che non vengono utilizzate.
Inoltre, Prometheus può rilevare automaticamente le origini dati tramite i seguenti mezzi:
Dopo aver rilevato una risorsa, Prometheus ne esegue periodicamente lo scraping per rilevare le metriche. Le metriche vengono quindi archiviate nel database di Prometheus, dove è possibile eseguire query e visualizzarle.
PromQL è un linguaggio di query potente e flessibile per le metriche raccolte da Prometheus, che può essere utilizzato per creare grafici, tabelle e avvisi ad hoc.
PromQL utilizza un linguaggio di query funzionale che consente all'utente di selezionare e aggregare i dati delle serie temporali in tempo reale. Il risultato di un'espressione può essere visualizzato sotto forma di grafico o dati tabulari nel browser delle espressioni di Prometheus oppure utilizzato da sistemi esterni tramite l'API HTTP.
Ecco alcuni dei possibili usi di Prometheus e PromQL:
Ecco alcuni esempi di query PromQL:
Per ottenere l'utilizzo medio della CPU al secondo per un'applicazione specifica, puoi utilizzare la seguente query:
Per ottenere il numero di richieste inviate a un endpoint specifico, puoi utilizzare la seguente query:
Per ottenere il numero totale di errori restituiti da un endpoint specifico, puoi utilizzare la seguente query: