Concetti relativi al monitoraggio dei servizi

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

  • Selezione delle 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 SLI.
  • Utilizzare il budget di errore implicito dallo SLO per mitigare il rischio nel servizio.

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

Terminologia

Il monitoraggio dei servizi include una serie di concetti fondamentali, che vengono presentati qui:

  • Indicatore del livello del servizio (SLI): una misurazione delle prestazioni.
  • Obiettivo del livello di servizio (SLO): una dichiarazione delle prestazioni desiderate.
  • Budget di errore: parte da 1 (SLO) e diminuisce quando le prestazioni effettive manca lo SLO.

Indicatori del livello del servizio

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

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

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

Le metriche delle prestazioni sono la base degli SLI del tuo servizio. Uno SLI descrive le prestazioni di alcuni aspetti del tuo servizio. Per i servizi su Anthos Service Mesh, Istio su Google Kubernetes Engine e App Engine sono già noti gli SLI utili. Ad esempio, se il servizio dispone di metriche del numero di richieste o di latenza della risposta, gli indicatori di livello del servizio (SLI) standard possono essere ricavati da queste metriche creando i 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 qualche altra misura di cosa significa "buone prestazioni". Questi SLI generalmente rientrano in due categorie:

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

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

Per esempi che creano gli 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 determinato periodo di tempo. Il servizio determina gli SLI disponibili e specifichi gli SLO in base agli SLI. Lo SLO definisce ciò che viene definito un 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 i seguenti:

  • 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 nell'arco di una settimana di calendario.

Requisiti come questi possono fornire la base per gli SLO. Per indicazioni sulla configurazione di SLO efficaci, consulta Progettazione e utilizzo degli SLO.

Le modifiche alla conformità dello SLO possono anche indicare l'insorgenza di errori. Il monitoraggio di queste modifiche potrebbe fornire un avviso sufficiente per consentirti di risolvere un problema prima che si causi a cascata. Pertanto, i criteri di avviso vengono generalmente utilizzati per monitorare la conformità degli SLO. Per saperne di più, consulta l'articolo 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 generalmente descritti come un "numero di nove": 99% (due 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 la misura in cui un servizio deve essere eseguito 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 essere in grado di funzionare 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 (come le 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 delle nuove versioni. Se il budget di errore è vicino all'esaurimento, l'esecuzione 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 il tuo SLO prevede che l'85% delle richieste vada a buon fine in un periodo continuativo di 7 giorni, il tuo budget di errore consente che il 15% di queste richieste risulti non valido. Se, ad esempio, hai ricevuto 60.480 richieste nell'ultima settimana, il tuo budget di errore è pari al 15% del totale, ovvero 9072 richieste considerate non corrette. Se hai pubblicato un numero maggiore di errori, significa che il servizio non ha superato lo SLO per il periodo di conformità di 7 giorni.

Progettazione e utilizzo degli SLO

Cosa rende efficace un SLO? Quali sono gli aspetti da considerare per le scelte? Questa sezione fornisce una panoramica di alcuni dei concetti generali alla base della progettazione e dell'utilizzo degli SLO. Questo argomento viene trattato in maggiore dettaglio 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 superiori a quelli necessari o significativi. Se gli utenti non sono in grado di distinguere la disponibilità del 99% da una disponibilità del 99,9% del servizio, utilizza il valore più basso come SLO. La scelta del valore più elevato è più costosa e non farà alcuna differenza per gli utenti. Un servizio necessario per soddisfare un obiettivo SLO del 100% non ha budget di errore. L'impostazione di uno SLO di questo tipo non è una buona pratica.

Gli SLO sono in genere più rigidi degli impegni pubblici o contrattuali. Il tuo obiettivo è che uno SLO sia più rigido di un impegno pubblico. In questo modo, se accade qualcosa che causa la violazione dello SLO, ne sei a conoscenza 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 relative alla reputazione, finanziaria o legale. Uno SLO fa parte di un sistema di avviso preventivo per evitare che questo accada.

Periodi di conformità

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

  • Periodi basati sul calendario (da data a oggi)
  • Periodi continuativi (da n giorni fa a oggi, dove n va 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 sui limiti di calendario noti. Per i valori possibili, consulta CalendarPeriod.

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

Così come accade per i mesi di calendario, i periodi di conformità mensili variano nel numero di giorni coperti.

Periodi di conformità basati sulla finestra temporale continua

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 vengono eliminati dal calcolo attuale e vengono sostituiti dai 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 da conformità a non conformità perché lo stato SLO cambia ogni giorno, man mano che i punti dati precedenti vengono eliminati e quelli nuovi vengono aggiunti.

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 è discussa nella sezione 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 eventi positivi ed eventi totali, 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 conformità è almeno del 99,9%. Il valore massimo è 100%.

SLO basati su richiesta

Uno SLO basato su richiesta si basa 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 questo rapporto soddisfa o supera l'obiettivo per il periodo di conformità.

Ad esempio, considera questo SLO basato su richiesta: "La latenza è inferiore a 100 ms per almeno il 95% delle richieste". Una richiesta valida è una 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 su richiesta ti danno un'idea della percentuale di lavoro eseguita correttamente dal tuo servizio nell'intero periodo di conformità, indipendentemente da come il carico è 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 certo criterio di idoneità e il numero totale di intervalli. Uno SLO basato su finestre viene soddisfatto 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 efficace è 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 periodi così buoni. Il servizio è conforme se questa frazione è almeno 0,99.

Per un altro esempio, supponi di configurare il periodo di conformità in modo che sia di 30 giorni in sequenza, che l'intervallo di misurazione sia di un minuto e che 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 clienti hanno trovato che il servizio funzionava bene o male. Questo tipo di SLO può nascondere gli effetti del comportamento "bursty": un intervallo di misurazione che non supera ogni chiamata conta rispetto allo SLO tanto quanto un intervallo di misurazione con un numero eccessivo di errori. Inoltre, gli intervalli con un numero basso di chiamate vengono conteggiati per lo SLO tanto quanto un intervallo di misurazione con attività intensa.

Traiettoria dei budget di errore

Il budget di errore fa la differenza tra un servizio valido al 100% e il tuo SLO, ovvero il livello di servizio desiderato. La differenza è la tua possibilità di movimento.

In generale, un budget di errore inizia come valore massimo e diminuisce nel tempo, causando 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 hai 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 ogni periodo di conformità, perciò estrapola un valore probabile. Questo valore è il rapporto tra le chiamate fino al tempo 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 misuri uno SLO in un periodo di conformità continuativo, sei effettivamente sempre alla fine di un periodo di conformità. Anziché iniziare da zero, i vecchi punti dati vengono continuamente eliminati e vengono aggiunti continuamente nuovi punti dati.

    Se un periodo di scarsa conformità viene fuori dalla finestra di conformità e se l'ora attuale viene sostituita, il budget di errore aumenta. In qualsiasi momento, un budget di errore ≥ 0 indica una finestra SLO continua conforme, mentre un budget di errore < 0 indica una finestra SLO continua non conforme.

Monitorare il budget di errore

Puoi creare criteri di avviso per avvisarti che il budget di errore viene consumato a una frequenza più rapida del previsto. 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.
  • Gli avvisi sulla burn rate descrivono come monitorare gli SLI per ricevere avvisi relativi a 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.