Il monitoraggio dei servizi e l'API SLO ti aiutano a gestire i tuoi servizi come Google gestisce i propri. Le nozioni di base del monitoraggio dei servizi includono quanto segue:
- Seleziona le metriche che fungono da indicatori del livello del servizio (SLI).
- Utilizzo degli SLI per impostare gli obiettivi del livello di servizio (SLO) per i valori SLI.
- Utilizza il budget di errore implicito nello SLO per ridurre il rischio nel tuo servizio.
Questa pagina introduce questi concetti e descrive alcuni aspetti da tenere in considerazione durante la progettazione di un SLO. Le altre pagine di questa sezione mettono in pratica questi concetti.
Terminologia
Il monitoraggio dei servizi ha un insieme di concetti fondamentali, che vengono introdotti di seguito:
- Indicatore del livello del servizio (SLI): una misura delle prestazioni.
- Obiettivo del livello di servizio (SLO): una dichiarazione delle prestazioni desiderate.
- Budget di errore: inizia da 1 - SLO e diminuisce man mano che il rendimento effettivo non raggiunge lo SLO.
Indicatori del livello del servizio
Cloud Monitoring raccoglie le metriche che misurano il rendimento dell'infrastruttura del servizio. 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 per le risposte HTTP 2xx.
Le metriche sul rendimento 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 tuo tipo di servizio e selezionare le metriche relative al rendimento.
Le metriche relative alle prestazioni sono la base degli SLI per il tuo servizio. Uno SLI descrive le prestazioni di un aspetto del tuo servizio. Per i servizi su Cloud Service Mesh, Istio su Google Kubernetes Engine e App Engine, sono già noti SLI utili. Ad esempio, se il tuo servizio ha metriche relative al numero di richieste o alle latenze di risposta, gli indicatori di livello del servizio (SLI) standard possono essere ricavati da queste metriche creando i seguenti rapporti:
- Un SLI di disponibilità è il rapporto tra il numero di risposte riuscite e il numero di tutte le risposte.
- Un 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.
Puoi anche configurare SLI specifici per servizio per misurare in altro modo il "buon rendimento". In genere, questi SLI rientrano in due categorie:
- SLI basati su richieste, in cui un servizio viene considerato buono se vengono conteggiate unità di servizio atomiche, ad esempio il numero di richieste HTTP riuscite.
- SLI basati su finestre, in cui un servizio viene considerato buono contando il numero di periodi di tempo o finestre durante i quali il rendimento soddisfa un criterio di idoneità, ad esempio la latenza di risposta al di sotto di una determinata soglia.
Questi SLI sono descritti in maggiore dettaglio in Conformità negli SLO basati su richieste e finestre.
Per esempi che creano SLI per servizi selezionati, consulta Creare SLI dalle metriche.
Obiettivi del livello di servizio
Uno SLO è un valore target per un SLI, misurato in un determinato periodo di tempo. Il servizio determina gli SLI disponibili e tu specifichi gli SLO in base agli SLI. Lo SLO definisce cosa si intende per servizio di buona qualità. 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 modo in cui lo SLI si confronta con l'obiettivo di prestazioni.
Ad esempio, potresti avere requisiti come:
- La latenza può superare i 300 ms solo nel 5% delle richieste in un periodo continuativo di 30 giorni.
- Il sistema deve avere una disponibilità del 99% misurata su una settimana di calendario.
Requisiti come questi possono fornire la base per gli SLO. Per indicazioni su come impostare SLO efficaci, consulta Progettazione e utilizzo degli SLO.
Le modifiche alla conformità allo SLO possono anche indicare l'inizio di errori. Il monitoraggio di queste modifiche potrebbe fornirti un avviso sufficiente per risolvere un problema prima che si propaghi. Pertanto, i criteri di avviso vengono generalmente utilizzati per monitorare la conformità allo SLO. Per ulteriori informazioni, vedi Avvisi sul budget di errore.
Uno SLO utile ha come target un valore inferiore al 100%, perché determina il budget di errore. Gli SLO sono in genere descritti come "numero di nove": 99% (due nove), 99,9% (tre 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 rendimento che un servizio deve raggiungere durante un periodo di conformità. La parte rimanente del periodo di conformità diventa il budget di errore. Il budget di errore quantifica la misura in cui un servizio può non raggiungere le prestazioni previste durante il periodo di conformità e soddisfare comunque lo SLO.
I budget di errore ti consentono di monitorare il numero di singoli eventi errati (ad es. richieste) che possono verificarsi durante il resto del periodo di conformità prima di violare lo SLO. Puoi utilizzare il budget di errore per gestire le attività di manutenzione come il deployment di nuove versioni. Se il budget di errore sta per esaurirsi, l'adozione di azioni rischiose come l'invio di nuovi aggiornamenti potrebbe 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 lo SLO prevede che l'85% delle richieste sia corretta in un periodo mobile di 7 giorni, il budget di errore consente che il 15% di queste richieste sia errata. Se hai ricevuto, ad esempio, 60.480 richieste nell'ultima settimana, il tuo budget di errore è pari al 15% del totale, ovvero 9.072 richieste che possono essere errate. Se hai generato più errori, il tuo servizio non ha rispettato lo SLO per il periodo di conformità di 7 giorni.
Progettazione e utilizzo degli SLO
Quali sono le caratteristiche di un buon SLO? Quali aspetti bisogna prendere in considerazione per fare delle scelte? Questa sezione fornisce una panoramica di alcuni dei concetti generali alla base della progettazione e dell'utilizzo degli SLO. Questo argomento è 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 pretendi dal tuo servizio. In generale, gli SLO non devono essere più elevati del necessario o significativi. Se i tuoi utenti non riescono a distinguere la differenza tra la disponibilità del 99% e la disponibilità del 99,9% del tuo servizio, utilizza il valore più basso come SLO. Il valore più elevato è più costoso da soddisfare e non farà alcuna differenza per i tuoi utenti. Un servizio necessario per raggiungere un obiettivo SLO del 100% non ha budget di errore. Impostare un SLO di questo tipo è una cattiva pratica.
Gli SLO sono in genere più stringenti degli impegni pubblici o contrattuali. Vuoi che uno SLO sia più stringente di un impegno pubblico. In questo modo, se si verifica un evento che causa la violazione dello SLO, lo sai e lo risolvi prima che causi una violazione di un impegno o di un contratto. La violazione di un impegno o di un contratto può avere implicazioni per la reputazione, per i risvolti finanziari o per quelli legali. Uno SLO fa parte di un sistema di avviso preventivo per evitare che ciò accada.
Periodi di conformità
Esistono due tipi di periodi di conformità per gli SLO:
- Periodi basati sul calendario (da data a data)
- Periodi di tempo (da n giorni fa a oggi, dove n va da 1 a 30 giorni)
Periodi di conformità basati sul calendario
I periodi di conformità possono essere impostati su periodi di calendario come una settimana o un mese.
Il periodo di conformità e il budget di errore vengono reimpostati su limiti di calendario ben noti.
Per i valori possibili, consulta CalendarPeriod
.
Con un periodo di calendario, ricevi un punteggio di rendimento alla fine del periodo. Misurato in base alla soglia di rendimento, il punteggio di rendimento ti consente di sapere se il tuo servizio è stato conforme o meno. Quando utilizzi un periodo di calendario, ricevi una valutazione della conformità una sola volta per ogni periodo di conformità, anche se visualizzi il rendimento durante tutto il periodo. Tuttavia, il voto di fine periodo ti fornisce un valore facile da leggere che corrisponde facilmente ai periodi di fatturazione dei clienti (se hai clienti paganti esterni).
Come i mesi in un calendario, i periodi di conformità mensili variano in base al numero di giorni che coprono.
Periodi di conformità basati su finestre temporali continue
Puoi anche misurare la conformità in un periodo cumulativo, in modo da valutare sempre, ad esempio, gli ultimi 30 giorni. Con un periodo cumulativo, i dati più vecchi del calcolo precedente vengono esclusi dal calcolo attuale e sostituiti da nuovi dati.
Con una finestra mobile, ottieni più misurazioni della conformità, ovvero una misura della conformità per gli ultimi 30 giorni anziché una al mese. I servizi possono passare dalla conformità alla mancata conformità poiché lo stato dello SLO cambia ogni giorno, man mano che i vecchi punti dati vengono eliminati e se ne aggiungono di nuovi.
Conformità negli SLO basati su richieste e finestre
La determinazione della conformità di un SLO dipende da due fattori:
- Come viene determinato il periodo di conformità. Questa determinazione è discussa in Periodi di conformità.
- Il tipo di SLO. Esistono due tipi di SLO:
- SLO basate sulle richieste
- SLO basati su Windows
La conformità è il rapporto tra eventi validi ed eventi totali, misurato durante il periodo di conformità. Il tipo di SLO determina cosa costituisce un "evento".
Se il tuo SLO è del 99,9%, lo soddisfi se la tua conformità è almeno del 99,9%. Il valore massimo è 100%.
SLO basate sulle richieste
Uno SLO basato sulle richieste si basa su uno SLI definito come il rapporto tra il numero di richieste valide e il numero totale di richieste. Uno SLO basato sulle richieste viene soddisfatto quando il rapporto soddisfa o supera l'obiettivo per il periodo di conformità.
Ad esempio, considera questo SLO basato sulle richieste: "La latenza è inferiore a 100 ms per almeno il 95% delle richieste". Una richiesta valida è quella 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 è almeno pari a 0,95.
Gli SLO basati sulle richieste ti forniscono un'idea della percentuale di lavoro svolta correttamente dal tuo servizio durante l'intero periodo di conformità, indipendentemente da come è stato distribuito il carico.
SLO basati su Windows
Uno SLO basato su finestre si basa su uno SLI definito come il rapporto tra il numero di intervalli di misurazione che soddisfano un criterio di idoneità e il numero totale di intervalli. Uno SLO basato su finestre viene raggiunto quando il rapporto soddisfa o supera l'obiettivo per il periodo di conformità.
Ad esempio, considera questa SLO: "La metrica della latenza del percentile 95 è inferiore a 100 ms per almeno il 99% delle 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 buoni. Il servizio è conforme se questa frazione è almeno pari a 0,99.
Un altro esempio: supponiamo di configurare il periodo di conformità in modo che sia un periodo di 30 giorni consecutivi, l'intervallo di misurazione in modo che sia di un minuto e l'obiettivo SLO in modo che sia pari al 99%. Per soddisfare questo SLO, il servizio deve avere 42.768 intervalli "buoni" su 43.200 minuti (99% del numero di minuti in 30 giorni).
Uno SLO basato su finestre ti dà un'idea della percentuale di volte in cui i tuoi clienti hanno riscontrato che il servizio funziona bene o male. Questo tipo di SLO può nascondere gli effetti di un comportamento "a picchi": un intervallo di misurazione in cui tutte le chiamate non sono andate a buon fine viene conteggiato ai fini dello SLO tanto quanto un intervallo di misurazione con un errore in più. Inoltre, gli intervalli con un numero ridotto di chiamate vengono conteggiati ai fini dell'SLP tanto quanto un intervallo di misurazione con attività intensa.
Traiettoria dei budget di errore
Il budget di errore è la differenza tra un servizio di buona qualità al 100% e il tuo SLO, il livello di servizio di buona qualità desiderato. La differenza tra i due è la tua libertà di manovra.
In genere, un budget di errore inizia come valore massimo e diminuisce nel tempo, attivando una violazione dello SLO quando scende al di sotto di 0.
Esistono alcune eccezioni importanti a questo modello:
Se hai uno SLO basato sulle richieste misurato in un periodo di conformità di calendario e l'attività del servizio è aumentata durante il periodo di conformità, il budget di errore rimanente può effettivamente aumentare.
Come è possibile? Il sistema SLO non può sapere in anticipo quanto sarà intensa l'attività del servizio in ogni periodo di conformità, quindi estrapola un valore probabile. Questo valore è il rapporto tra le chiamate fino al momento corrente 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, con conseguente aumento del budget di errore.
Se stai misurando uno SLO in un periodo di conformità continuo, sei effettivamente sempre alla fine di un periodo di conformità. Anziché iniziare da zero, i vecchi punti dati vengono eliminati continuamente e vengono aggiunti nuovi punti dati.
Se un periodo di scarsa conformità non rientra nella finestra di conformità e se il momento attuale, che lo sostituisce, è conforme, il budget di errore aumenta. In qualsiasi momento, un budget di errore ≥ 0 indica una finestra di SLO dinamico conforme e un budget di errore < 0 indica una finestra di SLO dinamico non conforme.
Monitoraggio del budget di errore
Puoi creare criteri di avviso per ricevere una notifica quando il budget di errore viene consumato a una velocità superiore a quella desiderata. Per ulteriori informazioni, consulta la sezione Avvisi sul budget di errori.
Passaggi successivi
- Microservizi descrive i microservizi e come utilizzare la console Google Cloud per configurarli, visualizzarli e gestirli.
- L'articolo Avvisi sulla velocità di consumo descrive come monitorare gli SLI in modo da ricevere avvisi in caso di possibili problemi.
- Utilizzo dell'API SLO mostra come utilizzare l'API SLO, un sottoinsieme dell'API Cloud Monitoring, per creare servizi, SLO e strutture correlati.