Utilizzo delle metriche Prometheus

Questa pagina illustra le nozioni di base sull'utilizzo delle metriche di Prometheus per gli SLI di disponibilità e latenza in Cloud Monitoring e sull'utilizzo di queste metriche per creare uno SLO.

Nozioni di base su Prometheus

Prometheus è una soluzione leader di monitoraggio open source per le metriche e gli avvisi.

Prometheus supporta dati dimensionali con identificatori di valori-chiave per le metriche, fornisce il linguaggio di query PromQL e supporta molte integrazioni fornendo esportatori per altri prodotti.

Per iniziare a utilizzare Prometheus con Monitoring, ti consigliamo di utilizzare Google Cloud Managed Service per Prometheus.

Metriche

Prometheus supporta i seguenti tipi di metriche:

  • Contatore: un singolo valore che può essere aumentato o reimpostato monotonicamente a 0 solo al riavvio.
  • Misura: un singolo valore numerico impostabile in modo arbitrario.
  • Istogramma: un gruppo di bucket configurabili per campionare le osservazioni e registrare i valori negli intervalli; fornisce inoltre la somma di tutti i valori osservati
  • Riepilogo: è un istogramma, ma calcola anche quantli configurabili in un intervallo di tempo scorrevole.

Per ulteriori informazioni, consulta Tipi di metriche.

Creazione di metriche per gli SLI

Se l'applicazione emette metriche di Prometheus, puoi utilizzarle per gli SLI.

  • Per gli SLI di disponibilità su richieste e conteggi di errori, puoi iniziare con le metriche del contatore di Prometheus.
  • Per gli SLI di latenza, puoi utilizzare l'istogramma o le metriche di riepilogo di Prometheus.

Per raccogliere le metriche Prometheus con Google Cloud Managed Service per Prometheus, consulta la documentazione per la configurazione della raccolta di metriche gestite o con deployment self-service.

Quando crei uno SLO nella console Google Cloud, i tipi di SLO predefiniti per disponibilità e latenza non includono le metriche Prometheus. Per utilizzare una metrica di Prometheus, crea uno SLO personalizzato, quindi scegli una metrica di Prometheus per lo SLI.

Le metriche di Prometheus iniziano con prometheus.googleapis.com/.

Metriche per GKE

La raccolta gestita di metriche da Google Cloud Managed Service per Prometheus è abilitata per impostazione predefinita per GKE. Se esegui in un ambiente GKE che non abilita la raccolta gestita per impostazione predefinita, puoi abilitare manualmente la raccolta gestita. Quando la raccolta gestita è abilitata, i componenti nel cluster sono in esecuzione, ma le metriche non vengono generate finché non esegui il deployment di una risorsa PodMonitoring che esegue lo scraping di un endpoint delle metriche valido o non abiliti uno dei pacchetti di metriche gestite.

Il pacchetto di metriche del piano di controllo include metriche che sono utili indicatori dell'integrità del sistema. Abilita la raccolta delle metriche del piano di controllo per utilizzare queste metriche per disponibilità, latenza e altri SLI.

  • Utilizza le metriche del server API per tenere traccia del carico del server API, della frazione delle richieste del server API che restituiscono errori e della latenza di risposta per le richieste ricevute dal server API.
  • Utilizza le metriche dello scheduler per rispondere in modo proattivo ai problemi di pianificazione quando non sono disponibili risorse sufficienti per i pod in attesa.

Metriche per gli SLI di disponibilità

Uno SLI di disponibilità basato sulle richieste deve essere espresso nell'API Cloud Monitoring utilizzando la struttura TimeSeriesRatio per configurare un rapporto tra richieste "buone" o "non buone" e richieste totali. Questo rapporto viene utilizzato nel campo goodTotalRatio di una struttura RequestBasedSli.

L'applicazione deve emettere metriche di Prometheus che possono essere utilizzate per costruire questo rapporto. L'applicazione deve emettere almeno due dei seguenti elementi:

  1. Una metrica che conteggia gli eventi totali. Utilizza questa metrica nell'elemento totalServiceFilter del rapporto.

    Puoi utilizzare un contatore Prometheus che viene incrementato per ogni evento.

  2. Una metrica che conteggia gli eventi "non validi", utilizza questa metrica nell'elemento badServiceFilter del rapporto.

    Puoi utilizzare un contatore Prometheus che viene incrementato per ogni errore o altro evento "non valido".

  3. Una metrica che conteggia gli eventi "buoni", utilizza questa metrica nell'elemento goodServiceFilter del rapporto.

    Puoi utilizzare un contatore Prometheus incrementato per ogni evento riuscito o "buono".

Metriche per gli SLI di latenza

Puoi esprimere uno SLI di latenza basato su richiesta nell'API Cloud Monitoring creando una struttura DistributionCut. Questa struttura viene utilizzata nel campo distributionCut di una struttura RequestBasedSli.

L'applicazione deve emettere una metrica di Prometheus che possa essere utilizzata per creare il valore di taglio di distribuzione. A questo scopo, puoi usare un istogramma o un riepilogo di Prometheus. Per determinare come definire i bucket per misurare con precisione se le risposte rientrano all'interno dello SLO, consulta Tipi di metriche nella documentazione di Prometheus.

Esempio

Il seguente esempio JSON utilizza la metrica prometheus.googleapis.com/apiserver_request_duration_seconds del piano di controllo GKE per creare uno SLO di latenza per un servizio. Lo SLO richiede che il 98% di latenza di risposta sia inferiore a 50 secondi in un mese di calendario.

{
 "displayName": "98% Calendar month - Request Duration Under 50s",
 "goal": 0.98,
 "calendarPeriod": "MONTH",
 "serviceLevelIndicator": {
   "requestBased": {
     "distributionCut": {
       "distributionFilter": "metric.type=\"prometheus.googleapis.com/apiserver_request_duration_seconds/histogram\" resource.type=\"prometheus_target\"",
       "range": {
         "min": "-Infinity",
         "max": 50
       }
     }
   }
 }
}

Passaggi successivi