Il monitoraggio dei servizi e l'API SLO ti aiutano a gestire i tuoi servizi come Google gestisce i propri servizi. I concetti fondamentali del monitoraggio dei servizi includono quanto segue:
- Selezione delle metriche che fungono da indicatori del livello del servizio (SLI).
- Utilizzo degli SLI per impostare gli obiettivi del livello del servizio (SLO) per i valori SLI.
- Utilizzo del budget di errore implicito nello SLO per ridurre il rischio nel servizio.
Questa pagina introduce questi concetti e descrive alcune delle cose da considerare quando si progetta uno 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 qui:
- Indicatore del livello del servizio (SLI): una misurazione delle prestazioni.
- Obiettivo del livello del servizio (SLO): una dichiarazione delle prestazioni desiderate.
- Budget di errore: inizia con 1 - SLO e diminuisce man mano che le prestazioni effettive non raggiungono lo SLO.
Indicatori del livello del servizio
Cloud Monitoring raccoglie metriche che misurano le prestazioni dell'infrastruttura di servizio. Ecco alcuni esempi di metriche delle prestazioni:
- Conteggio richieste: ad esempio, il numero di richieste HTTP al minuto che generano risposte 2xx o 5xx.
- Latenze delle risposte: ad esempio, la latenza per le 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 tuo tipo di servizio e selezionare le metriche delle prestazioni.
Le metriche delle prestazioni sono la base degli SLI per il tuo servizio. Uno SLI descrive le prestazioni di alcuni aspetti del tuo servizio. Per i servizi su Cloud Service Mesh, Istio su Google Kubernetes Engine e App Engine, gli SLI utili sono già noti. Ad esempio, se il tuo servizio ha metriche di conteggio delle richieste o di latenza delle risposte, è possibile derivare indicatori del livello del servizio (SLI) standard 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.
Puoi anche configurare SLI specifici del servizio per un'altra misura di ciò che significa "buone prestazioni". Questi SLI rientrano generalmente in due categorie:
- SLI basati su richieste, in cui un servizio valido viene misurato contando le unità atomiche del servizio, ad esempio il numero di richieste HTTP riuscite.
- SLI basati su finestre, in cui un servizio valido viene misurato contando il numero di periodi di tempo, o finestre, durante i quali le prestazioni soddisfano un criterio di idoneità, ad esempio la latenza delle risposte al di sotto di una determinata soglia.
Questi SLI sono descritti in dettaglio in Conformità negli SLO basati su richieste e finestre.
Per esempi di creazione di 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 ciò che si qualifica come un servizio valido. 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 rendimento, 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 rendimento.
Ad esempio, potresti avere requisiti come questi:
- 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 in una settimana di calendario.
Requisiti come questi possono fornire la base per gli SLO. Per indicazioni sull'impostazione di SLO validi, consulta Progettazione e utilizzo degli SLO.
Le modifiche alla conformità SLO possono anche indicare l'inizio di errori. Il monitoraggio di queste modifiche potrebbe darti un preavviso sufficiente per risolvere un problema prima che si propaghi. Pertanto, i criteri di avviso vengono generalmente utilizzati per monitorare la conformità SLO. Per ulteriori informazioni, consulta Avvisi sul budget di errore.
Uno SLO utile ha come target un valore inferiore al 100%, perché lo SLO determina il budget di errore. Gli SLO vengono 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 prestazioni che un servizio deve raggiungere 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 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 non validi (ad esempio 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 è quasi esaurito, l'esecuzione di azioni rischiose come l'applicazione 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 valido in un periodo continuativo di 7 giorni, il budget di errore consente che il 15% di queste richieste non sia valido. Se hai ricevuto, ad esempio, 60.480 richieste nell'ultima settimana, il budget di errore è il 15% del totale, ovvero 9.072 richieste che possono non essere valide. Se hai riscontrato più errori di questo, il tuo servizio non rientrava nello SLO per il periodo di conformità di 7 giorni.
Progettazione e utilizzo degli SLO
Che cosa rende valido uno SLO? Quali sono gli aspetti da considerare per fare le 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 superiori al necessario o significativi. Se i tuoi utenti non riescono a distinguere tra una disponibilità del 99% e una del 99,9% del tuo servizio, utilizza il valore inferiore come SLO. Il valore più alto è più costoso da raggiungere e non farà la differenza per i tuoi utenti. Un servizio che deve soddisfare un obiettivo SLO del 100% non ha un budget di errore. L'impostazione di uno SLO di questo tipo è una pratica sconsigliata.
Gli SLO sono in genere più rigorosi degli impegni pubblici o contrattuali. È preferibile che uno SLO sia più rigoroso di un impegno pubblico. In questo modo, se si verifica un evento che causa la violazione dello SLO, puoi essere a conoscenza del problema e risolverlo prima che causi una violazione di un impegno o di un contratto. La violazione di un impegno o di un contratto può avere implicazioni reputazionali, finanziarie o legali. Uno SLO fa parte di un sistema di allerta precoce 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 continuativi (da n giorni fa a oggi, dove n varia 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 in base ai limiti del calendario noti.
Per i valori possibili, consulta CalendarPeriod.
Con un periodo di calendario, ottieni un punteggio delle prestazioni alla fine del periodo. Misurato rispetto alla soglia di prestazioni, il punteggio delle prestazioni ti indica se il tuo servizio era conforme o meno. Quando utilizzi un periodo di calendario, ottieni una valutazione della conformità solo una volta per ogni periodo di conformità, anche se vedi le prestazioni durante il periodo. Tuttavia, il punteggio di fine periodo ti 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 in base al numero di giorni che coprono.
Periodi di conformità basati su finestre continue
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 più vecchi del calcolo precedente vengono eliminati dal calcolo corrente e vengono sostituiti da nuovi dati.
Con una finestra continua, ottieni più misurazioni della conformità, ovvero una misurazione della conformità per gli ultimi 30 giorni, anziché una al mese. I servizi possono passare dalla conformità alla non conformità man mano che lo stato SLO cambia quotidianamente, poiché i vecchi punti dati vengono eliminati e ne vengono aggiunti di nuovi.
Conformità negli SLO basati su richieste e finestre
La determinazione della conformità di uno SLO dipende da due fattori:
- Come viene determinato il periodo di conformità. Questa determinazione è descritta in Periodi di conformità.
- Il tipo di SLO. Esistono due tipi di SLO:
- SLO basati su richieste
- SLO basati su finestre
La conformità è il rapporto tra eventi validi ed eventi totali, misurato nel periodo di conformità. Il tipo di SLO determina ciò che costituisce un "evento".
Se lo SLO è del 99,9%, lo raggiungi se la conformità è almeno del 99,9%. Il valore massimo è 100%.
SLO basati su richieste
Uno SLO basato su 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 su richieste viene raggiunto quando questo rapporto raggiunge o supera l'obiettivo per il periodo di conformità.
Ad esempio, considera questo SLO basato su richieste: "La latenza è inferiore a 100 ms per almeno il 95% delle richieste". Una richiesta valida è 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 è almeno 0,95.
Gli SLO basati su richieste ti danno un'idea della percentuale di lavoro svolto correttamente dal tuo servizio durante l'intero periodo di conformità, indipendentemente da come è stato distribuito il carico durante il periodo di conformità.
SLO basati su finestre
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 questo rapporto raggiunge o supera l'obiettivo per il periodo di conformità.
Ad esempio, considera questo SLO: "La metrica di latenza del 95° percentile è inferiore a 100 ms per almeno il 99% delle finestre di 10 minuti". Un periodo di misurazione valido è 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 è almeno 0,99.
Per un altro esempio, supponiamo che tu configuri il periodo di conformità in modo che sia un periodo continuativo di 30 giorni, l'intervallo di misurazione in modo che sia un minuto e l'obiettivo SLO in modo che sia del 99%. Per soddisfare questo SLO, il tuo servizio deve avere 42.768 intervalli "validi" su 43.200 minuti (il 99% del numero di minuti in 30 giorni).
Uno SLO basato su finestre ti dà un'idea della percentuale di tempo in cui i tuoi clienti hanno trovato il servizio funzionante bene o male. Questo tipo di SLO può nascondere gli effetti del comportamento "a raffica": un intervallo di misurazione in cui tutte le chiamate non sono riuscite viene conteggiato rispetto allo SLO tanto quanto un intervallo di misurazione che ha avuto un errore di troppo. Inoltre, gli intervalli con un numero ridotto di chiamate vengono conteggiati rispetto allo SLO tanto quanto un intervallo di misurazione con un'attività intensa.
Traiettoria dei budget di errore
Il budget di errore è la differenza tra un servizio valido al 100% e lo SLO, il livello di servizio valido desiderato. La differenza tra i due è il margine di manovra.
In generale, un budget di errore inizia con un valore massimo e diminuisce nel tempo, attivando una violazione dello SLO quando il budget di errore scende sotto 0.
Esistono alcune eccezioni degne di nota a questo pattern:
Se hai uno SLO basato su richieste misurato in un periodo di conformità del calendario e il servizio ha aumentato l'attività durante il periodo di conformità, il budget di errore rimanente può effettivamente aumentare.
Come è possibile? Il sistema SLO non può sapere in anticipo quanta attività avrà il servizio in ogni 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à.
Man mano che la frequenza di attività aumenta, aumenta anche il traffico previsto per il periodo e, di conseguenza, aumenta il budget di errore.
Se misuri uno SLO in un periodo di conformità continuativo, ti trovi sempre alla fine di un periodo di conformità. Anziché ricominciare da zero, i vecchi punti dati vengono eliminati continuamente e vengono aggiunti continuamente nuovi punti dati.
Se un periodo di scarsa conformità esce dalla 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 SLO continua conforme e un budget di errore < 0 indica una finestra SLO continua non conforme.
Monitoraggio del budget di errore
Puoi creare criteri di avviso per ricevere un avviso che ti informi che il budget di errore viene consumato a una velocità superiore a quella desiderata. Per ulteriori informazioni, consulta Avvisi sul budget di errore.
Passaggi successivi
- Microservizi descrive i microservizi e come utilizzare la Google Cloud console per configurare, visualizzare e gestire i microservizi.
- Avvisi sul burn rate descrive come monitorare gli SLI in modo da ricevere un avviso 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 correlate.