Che cos'è Prometheus?

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.  

A cosa serve Prometheus?

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.

Quali sono i vantaggi di Prometheus?

Ecco alcuni dei vantaggi specifici dell'utilizzo di Prometheus:

  • Apertura: Prometheus è open source, parte della Cloud Native Computing Foundation (CNCF) e gratuito.
  • Affidabilità: Prometheus è affidabile e ha una comprovata esperienza negli ambienti di produzione di alcune delle più grandi aziende del mondo.
  • Assistenza dalla community: Prometheus ha una community vasta e attiva che fornisce assistenza, documentazione e miglioramenti. Dispone inoltre di una serie di integrazioni con altri strumenti, che consentono di monitorare i sistemi e l'infrastruttura e di visualizzare i dati.
  • Ottimo funzionamento con Kubernetes: in quanto soluzione di monitoraggio predefinita per Kubernetes, la maggior parte delle applicazioni di terze parti è già instrumentata per le metriche di Prometheus.
  • Funzionamento in tutti gli ambienti: sebbene sia stato adottato prevalentemente su deployment Kubernetes, Prometheus può essere utilizzato anche per le VM e per alcuni ambienti serverless.

Quali sono i componenti di Prometheus? 

  • Server Prometheus: il componente centrale del sistema di monitoraggio Prometheus. Archivia i dati delle serie temporali ed espone un'API HTTP per l'esecuzione di query e l'emissione di avvisi sui dati.
  • Esportatori di Prometheus: agenti software che raccolgono metriche da vari sistemi e le espongono a Prometheus.
  • Alertmanager: un servizio che riceve avvisi da Prometheus e li indirizza agli utenti o ai sistemi appropriati.
  • Federazione di Prometheus: una funzionalità che consente a più server Prometheus di condividere dati.
  • Prometheus Pushgateway: un componente che consente ai servizi di inviare metriche a Prometheus senza dover eseguire lo scraping. Questa funzionalità serve soprattutto per i job di breve durata.
  • Prometheus blackbox exporter: un servizio che può essere utilizzato per monitorare la disponibilità degli endpoint HTTP, TCP e DNS.

In che modo Prometheus raccoglie le metriche?

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: 

  • Rilevamento dei servizi: Prometheus può utilizzare una varietà di meccanismi di rilevamento dei servizi per trovare gli host che eseguono servizi che espongono le metriche. Ad esempio, Prometheus può utilizzare l'API Kubernetes per scoprire i pod che eseguono gli esportatori Prometheus.
  • Configurazione statica: è anche possibile configurare Prometheus in modo statico per eseguire lo scraping di risorse specifiche. Questa configurazione è utile per le risorse che non sono rilevabili in altri modi.
  • Rilevamento dei file: Prometheus può anche rilevare le risorse cercando file che contengono metriche. Ad esempio, Prometheus può rilevare i file generati da collectd o nagios.

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.

Quali sono i quattro tipi di metriche di Prometheus?

  • I contatori monitorano i valori cumulativi che possono solo aumentare. Vengono spesso utilizzati per monitorare aspetti come le richieste gestite, gli errori e i byte trasferiti.
  • Gli indicatori tengono traccia dei rapporti che possono aumentare o diminuire, in genere misurando la frequenza al secondo. Vengono spesso utilizzati per monitorare aspetti come l'utilizzo della memoria e della CPU, nonché lo spazio su disco.
  • Gli istogrammi tracciano la distribuzione dei valori. Vengono spesso utilizzati per monitorare aspetti come la latenza delle richieste e le dimensioni delle risposte.
  • I riepiloghi sono simili agli istogrammi, ma tengono anche traccia dei quantili. Ciò le rende più utili per identificare gli outlier e comprendere la distribuzione complessiva dei valori.

Che cos'è PromQL?

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:

  • Monitoraggio dello stato di integrità delle applicazioni e dell'infrastruttura: Prometheus raccoglie metriche e avvisi su potenziali problemi.
  • Identificazione di potenziali problemi: Prometheus confronta le metriche attuali con i dati storici e gli avvisi relativi a eventuali deviazioni significative.
  • Risoluzione dei problemi: Prometheus fornisce una vista dettagliata dello stato del sistema e consente agli utenti di visualizzare in dettaglio metriche e risorse specifiche per identificare la causa principale del problema.
  • Visualizzazione dei dati: Prometheus utilizza il proprio linguaggio di query PromQL per eseguire query sui dati delle serie temporali, quindi visualizza i risultati in vari formati, tra cui grafici, tabelle e avvisi.
  • Creazione di avvisi: Prometheus utilizza il proprio linguaggio di query PromQL per eseguire query sui dati delle serie temporali e invia notifiche quando i risultati soddisfano determinate condizioni.
  • Visualizzazione negli strumenti di terze parti: qualsiasi frontend che comprenda l'API Prometheus Query, ad esempio Grafana o Kiali, può eseguire query sul server Prometheus e visualizzare i dati.

Esempi di query PromQL

Ecco alcuni esempi di query PromQL:

Utilizzo medio della CPU al secondo

Per ottenere l'utilizzo medio della CPU al secondo per un'applicazione specifica, puoi utilizzare la seguente query:

query promql sull'utilizzo della CPU al secondo

Numero di richieste a un endpoint

Per ottenere il numero di richieste inviate a un endpoint specifico, puoi utilizzare la seguente query:

query promql per il numero di richieste di un endpoint

Numero di errori nelle richieste all'endpoint

Per ottenere il numero totale di errori restituiti da un endpoint specifico, puoi utilizzare la seguente query:

Esempio di query promql sugli errori di richiesta a un endpoint

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti gratuiti da spendere su Google Cloud.
Parla con un esperto delle vendite di Google Cloud per discutere della tua sfida unica in modo più dettagliato.
Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
Console
Google Cloud