Concetti relativi al monitoraggio dei servizi

Il monitoraggio dei servizi e l'API SLO ti aiutano a gestire i servizi come Google gestisce i propri servizi. Le nozioni fondamentali sul monitoraggio dei servizi includono:

  • Selezione di metriche che fungono da indicatori del livello del servizio (SLI).
  • Utilizzare gli SLI per impostare gli obiettivi del livello del servizio (SLO) per i valori degli SLI.
  • Viene utilizzato il budget di errore implicito nello SLO per ridurre i rischi nel servizio.

Questa pagina introduce questi concetti e descrive alcuni degli aspetti da considerare durante la progettazione di uno SLO. Nelle altre pagine di questa sezione vengono messi in pratica questi concetti.

Terminologia

Il monitoraggio dei servizi presenta una serie di concetti fondamentali, che vengono introdotti di seguito:

  • Indicatore del livello del servizio (SLI): una misurazione delle prestazioni.
  • Obiettivo del livello di servizio (SLO): una dichiarazione delle prestazioni desiderate.
  • Budget di errore: inizia da 1 - SLO e diminuisce perché nelle prestazioni effettive manca lo SLO.

Indicatori del livello del servizio

Cloud Monitoring raccoglie metriche che misurano le prestazioni dell'infrastruttura dei servizi. Ecco alcuni esempi di metriche sul rendimento:

  • Conteggio delle richieste: ad esempio, il numero di richieste HTTP al minuto che generano risposte 2xx o 5xx.
  • Latenze di risposta, ad esempio la latenza delle risposte HTTP 2xx.

Le metriche delle prestazioni vengono identificate automaticamente in base a un insieme di tipi di servizi noti: Cloud Service Mesh, Istio su Google Kubernetes Engine e App Engine. Puoi anche definire il tipo di servizio e selezionare le relative metriche delle prestazioni.

Le metriche delle prestazioni sono la base degli SLI per il tuo servizio. Uno SLI descrive le prestazioni di qualche aspetto del tuo servizio. Per i servizi su Cloud Service Mesh, Istio su Google Kubernetes Engine e App Engine, sono già noti degli SLI utili. Ad esempio, se il tuo servizio ha metriche relative al numero delle richieste o alle latenze di risposta, gli indicatori del livello del servizio (SLI) standard possono essere ricavati da queste metriche creando rapporti come segue:

  • Uno SLI di disponibilità è il rapporto tra il numero di risposte riuscite e il numero di tutte le risposte.
  • Uno SLI di latenza è il rapporto tra il numero di chiamate al di sotto di una soglia di latenza e il numero di tutte le chiamate.

Potete anche impostare SLI specifici per il servizio per un'altra misura del significato di "buone prestazioni". Questi SLI in genere rientrano in due categorie:

  • SLI basati su richiesta, in cui un buon servizio viene misurato conteggiando le unità atomiche di servizio, ad esempio il numero di richieste HTTP riuscite.
  • SLI basati su Windows, in cui un buon servizio viene misurato contando il numero di periodi di tempo, o finestre, durante i quali le prestazioni soddisfano un criterio di idoneità, come la latenza di risposta al di sotto di una determinata soglia.

Questi SLI sono descritti in modo più dettagliato in Conformità negli SLO basati su richieste e finestre.

Per esempi che creano SLI per i servizi selezionati, consulta Creazione di SLI dalle metriche.

Obiettivi del livello di servizio

Uno SLO è un valore target per uno SLI, misurato in un periodo di tempo. Il servizio determina gli SLI disponibili e tu specifichi gli SLO in base agli SLI. Lo SLO definisce cosa si definisce buon servizio. Puoi creare fino a 500 SLO per ogni servizio in Cloud Monitoring.

Uno SLO è basato sui seguenti tipi di informazioni:

  • Uno SLI, che misura le prestazioni del servizio.
  • Un obiettivo di prestazioni, che specifica il livello di prestazioni desiderato
  • Un periodo di tempo, chiamato periodo di conformità, per misurare il confronto tra lo SLI e l'obiettivo di prestazioni.

Ad esempio, potresti avere requisiti come questi:

  • La latenza può superare i 300 ms solo nel 5% delle richieste in un periodo di 30 giorni continuativi.
  • Il sistema deve avere una disponibilità del 99% misurata in una settimana di calendario.

Requisiti come questi possono rappresentare le basi per gli SLO. Consulta la pagina Progettazione e utilizzo degli SLO per indicazioni su come impostare SLO di buona qualità.

Le modifiche alla conformità agli SLO possono anche indicare l'insorgenza di errori. Il monitoraggio di queste modifiche potrebbe generare avvisi sufficienti per risolvere un problema prima che si trasformi in cascata. Pertanto, i criteri di avviso vengono generalmente utilizzati per monitorare la conformità agli SLO. Per saperne di più, consulta Avvisi sul budget di errore.

Uno SLO utile ha come target meno del 100%, perché lo SLO determina il budget di errore. Gli SLO sono in genere descritti come un "numero di nove": 99% (2 nove), 99,9% (3 nove) e così via. Il valore massimo che puoi impostare è 99,9%, ma puoi utilizzare qualsiasi valore inferiore appropriato per il tuo servizio.

Budget di errore

Uno SLO specifica il grado di esecuzione di un servizio durante un periodo di conformità. Ciò che rimane nel periodo di conformità diventa il budget di errore. Il budget di errore quantifica la misura in cui un servizio può non funzionare durante il periodo di conformità e soddisfare comunque lo SLO.

I budget di errore consentono di monitorare il numero di singoli eventi errati (come le richieste) che possono verificarsi durante il resto del periodo di conformità prima che tu violi lo SLO. Il budget di errore può essere utilizzato per gestire le attività di manutenzione, come il deployment di nuove versioni. Se il budget di errore sta per esaurirsi, intraprendere azioni rischiose come l'invio di nuovi aggiornamenti potrebbero comportare la violazione di uno SLO.

Il budget di errore per un periodo di conformità è (1 - obiettivo SLO) × (eventi idonei nel periodo di conformità). Ad esempio, se il tuo SLO prevede che l'85% delle richieste sia valido in un periodo continuativo di 7 giorni, il budget di errore consente che il 15% di queste richieste sia non valido. Se hai ricevuto, ad esempio, 60.480 richieste nell'ultima settimana, il tuo budget di errore è pari al 15% di questo totale o 9072 richieste consentite come non valide. Se hai generato un numero maggiore di errori, il servizio è stato fuori dallo SLO per il periodo di conformità di 7 giorni.

progettazione e utilizzo degli SLO

Quali sono le caratteristiche di un buon SLO? Quali sono gli aspetti da considerare per fare una scelta? Questa sezione fornisce una panoramica di alcuni dei concetti generali alla base della progettazione e dell'utilizzo degli SLO. Questo argomento viene trattato in modo molto più dettagliato in Site Reliability Engineering: How Google Runs Production Systems, nel capitolo sugli SLO.

Gli SLO definiscono le prestazioni target che vuoi ottenere dal tuo servizio. In generale, gli SLO non dovrebbero essere più elevati del necessario o significativi. Se gli utenti non sono in grado di distinguere tra una disponibilità del 99% e una disponibilità del 99,9% del servizio, utilizza il valore inferiore come SLO. Il valore più alto è più costoso da soddisfare e non farà alcuna differenza per i tuoi utenti. Un servizio necessario per raggiungere un obiettivo di SLO del 100% non ha budget di errore. Impostare uno SLO di questo tipo è una pratica negativa.

Gli SLO sono in genere più rigidi degli impegni pubblici o contrattuali. Vuoi che uno SLO sia più rigido di un impegno pubblico. In questo modo, se succede qualcosa che causa la violazione dello SLO, sai che il problema è a conoscenza e lo risolvi prima che causi la violazione di un impegno o di un contratto. La violazione di un impegno o di un contratto può comportare implicazioni in termini di reputazione, finanziarie o legali. Uno SLO fa parte di un sistema di allarme anticipato per evitare che ciò accada.

Periodi di conformità

Esistono due tipi di periodi di conformità per gli SLO:

  • Periodi basati sul calendario (dalla data a oggi)
  • Periodi di rotazione (da n giorni fa a oggi, dove n varia da 1 a 30 giorni)

Periodi di conformità basati su calendario

I periodi di conformità possono essere impostati su periodi di calendario, ad esempio una settimana o un mese. Il periodo di conformità e il budget di errore vengono reimpostati su limiti di calendario noti. Per i valori possibili, vedi CalendarPeriod.

Con un periodo di calendario, ottieni un punteggio di rendimento alla fine di questo periodo. Misurato in base alla soglia di prestazioni, il punteggio delle prestazioni ti consente di sapere se il servizio è stato conforme o meno. Quando utilizzi un periodo di calendario, ricevi una valutazione di conformità solo una volta per ogni periodo di conformità, anche se riscontri le prestazioni durante tutto il periodo. Tuttavia, il punteggio di fine periodo fornisce un valore di facile lettura che corrisponde facilmente ai periodi di fatturazione dei clienti (se hai clienti paganti esterni).

Come i mesi di un calendario, i periodi di conformità mensili variano nel numero di giorni coperti.

Periodi di conformità a rotazione basati su finestre

Puoi anche misurare la conformità in un periodo continuativo, in modo da valutare sempre, ad esempio, gli ultimi 30 giorni. Con un periodo continuativo, i dati meno recenti nel calcolo precedente escono dal calcolo corrente e vengono sostituiti dai nuovi dati.

Con una finestra temporale continua, ottieni più misurazioni di conformità, ovvero una misurazione della conformità per gli ultimi 30 giorni, anziché una al mese. I servizi possono passare dalla conformità alla non conformità e viceversa quando lo stato dello SLO cambia giornalmente, man mano che i vecchi punti dati vengono eliminati e quelli aggiunti di nuovi.

Conformità negli SLO basati su richieste e finestre

La conformità di uno SLO dipende da due fattori:

  • Come viene determinato il periodo di conformità. Questa determinazione viene discussa nei periodi di conformità.
  • Il tipo di SLO. Esistono due tipi di SLO:
    • SLO basati su richiesta
    • SLO basati su Windows

La conformità è il rapporto tra gli eventi positivi e il totale degli eventi, misurato nel periodo di conformità. Il tipo di SLO determina cosa costituisce un "evento".

Se il tuo SLO è del 99,9%, significa che lo soddisfi se la tua conformità è almeno il 99,9%. Il valore massimo è 100%.

SLO basati su richiesta

Uno SLO basato su richieste è basato su uno SLI, definito come il rapporto tra il numero di richieste soddisfacenti e il numero totale di richieste. Uno SLO basato su richiesta viene soddisfatto quando tale rapporto soddisfa o supera l'obiettivo per il periodo di conformità.

Considera ad esempio questo SLO basato sulle richieste: "La latenza è inferiore a 100 ms per almeno il 95% delle richieste". Una buona richiesta è una richiesta con un tempo di risposta inferiore a 100 ms, quindi la misura della conformità è la frazione di richieste con tempi di risposta inferiori a 100 ms. Il servizio è conforme se questa frazione è di almeno 0, 95.

Gli SLO basati su richiesta danno un'idea della percentuale di lavoro eseguito correttamente dal servizio durante l'intero periodo di conformità, indipendentemente da come il carico sia stato distribuito durante il periodo di conformità.

SLO basati su Windows

Uno SLO basato su Windows si basa su uno SLI definito come il rapporto tra il numero di intervalli di misurazione che soddisfa un determinato criterio di idoneità e il numero totale di intervalli. Uno SLO basato su finestre viene raggiunto quando tale rapporto soddisfa o supera l'obiettivo per il periodo di conformità.

Ad esempio, considera questo SLO: "La metrica di latenza al 95° percentile è inferiore a 100 ms per almeno il 99% di finestre di 10 minuti". Un buon periodo di misurazione è un intervallo di 10 minuti in cui il 95% delle richieste ha una latenza inferiore a 100 ms. La misura della conformità è la frazione di questi periodi validi. Il servizio è conforme se questa frazione è di almeno 0,99.

Per un altro esempio, supponiamo che il tuo periodo di conformità sia di 30 giorni consecutivi, che l'intervallo di misurazione sia un minuto e l'obiettivo SLO sia del 99%. Per soddisfare questo SLO, il servizio deve avere 42.768 intervalli "buoni" su 43.200 minuti (il 99% del numero di minuti in 30 giorni).

Uno SLO basato su Windows ti dà un'idea della percentuale di tempo in cui i tuoi clienti hanno scoperto che il servizio funziona bene o male. Questo tipo di SLO può nascondere gli effetti del comportamento "bursty". Un intervallo di misurazione che non ha superato ogni singola chiamata viene conteggiato ai fini dello SLO tanto quanto un intervallo di misurazione con un errore di troppo. Inoltre, gli intervalli con un numero ridotto di chiamate vengono conteggiati ai fini dello SLO tanto quanto un intervallo di misurazione con attività intensa.

Previsione dei budget di errore

Il budget di errore è la differenza tra il 100% di buono servizio e il tuo SLO, il livello desiderato di buon servizio. La differenza tra loro è lo spazio di manovra.

In generale, un budget di errore inizia come valore massimo e diminuisce nel tempo, determinando una violazione dello SLO quando il budget di errore scende al di sotto di 0.

Esistono un paio di eccezioni degne di nota a questo modello:

  • Se disponi di uno SLO basato su richiesta misurato in un periodo di conformità del calendario e il servizio ha aumentato l'attività nel periodo di conformità, il budget di errore rimanente può effettivamente aumentare.

    Com'è possibile? Il sistema SLO non può sapere in anticipo quanta attività avrà il servizio in ciascun periodo di conformità, quindi estrapola un valore probabile. Questo valore è il rapporto tra le chiamate fino al momento attuale e il tempo trascorso dall'inizio del periodo di conformità, moltiplicato per la durata del periodo di conformità.

    Con l'aumento del tasso di attività, aumenta anche il traffico previsto per il periodo e, di conseguenza, il budget di errore aumenta.

  • Se stai misurando uno SLO in un periodo di conformità in sequenza, lo SLO è sempre alla fine di un periodo di conformità. Anziché partire da zero, i vecchi punti dati vengono continuamente eliminati e ne vengono aggiunti continuamente di nuovi.

    Se un periodo di scarsa conformità esce dalla finestra di conformità e, se al momento la sostituisce, risulta conforme, il budget di errore aumenta. In qualsiasi momento, un budget di errore ≥ 0 indica una finestra SLO in sequenza conforme, mentre un budget di errore < 0 indica una finestra di SLO in sequenza non conforme.

Monitoraggio del budget di errore

Puoi creare criteri di avviso per avvisarti che il tuo budget di errore viene utilizzato a una frequenza superiore a quella desiderata. Per ulteriori informazioni, consulta Avvisi sul budget di errore.

Passaggi successivi

  • Microservizi descrive i microservizi e come utilizzare la console Google Cloud per configurare, visualizzare e gestire i microservizi.
  • Avvisi sulla percentuale di bruciatura: descrive come monitorare gli SLI per ricevere avvisi su possibili problemi.
  • L'utilizzo dell'API SLO mostra come utilizzare l'API SLO, un sottoinsieme dell'API Cloud Monitoring, per creare servizi, SLO e strutture correlate.