Panoramica

Questa sezione esamina il concetto di indicatori del livello del servizio (SLI), definisce cosa rende un SLI buono o utile e fornisce esempi di implementazioni di SLI per servizi selezionati. Questa pagina è pensata per le persone che vogliono esempi che implementino gli indicatori di livello del servizio specifici per il servizio.

Introduzione agli SLI

L'affidabilità di un servizio è un concetto astratto; il significato di affidabilità dipende dal servizio e dalle esigenze dei suoi utenti. Un indicatore del livello di servizio (SLI) è una misura di questa affidabilità da utilizzare sia per comunicare l'affidabilità del servizio sia per gestirlo.

Gli SLI vengono misurati in un intervallo di tempo. La dimensione della finestra in genere dipende dalla decisione per cui vengono utilizzate le informazioni. Ad esempio, puoi misurare un singolo indicatore SLI nei seguenti modi:

  • Nell'ultima ora, per la creazione di criteri di avviso.
  • Per settimane, per prendere decisioni tattiche.
  • Per mesi, per prendere decisioni strategiche.

Ti consigliamo di utilizzare 28 giorni come punto di partenza per misurare l'SLI. Questo valore offre un buon equilibrio tra i casi d'uso strategici e tattici.

Per saperne di più, consulta le seguenti sezioni del Site Reliability Engineering Workbook:

Proprietà di un buon SLI

Consideriamo "buoni" gli indicatori SLI che soddisfano i seguenti criteri:

  • Gli SLI sono buone misure proxy per la soddisfazione degli utenti.

    Un buon SLI è fortemente correlato alla soddisfazione degli utenti. Utilizzi l'SLI come base per un obiettivo del livello di servizio (SLO), una soglia impostata sull'SLI. Imposti l'SLO in modo che, quando l'SLI rientra in un intervallo definito, la maggior parte dei tuoi utenti sia soddisfatta. Affinché questa relazione sia valida, lo SLI deve essere una buona misura proxy per la soddisfazione degli utenti.

    Se lo SLI è un buon proxy per la soddisfazione degli utenti, quando si verifica un evento che influisce sulla soddisfazione degli utenti, lo SLI cambia in una determinata direzione. Allo stesso modo, quando non ci sono eventi che influiscono sulla soddisfazione degli utenti, l'SLI non cambia.

  • Gli indicatori SLI aumentano in modo monotono e lineare con la soddisfazione degli utenti.

    Un buon SLI aumenta in modo monotono e lineare con la soddisfazione degli utenti. Se l'SLI migliora, migliora anche la soddisfazione degli utenti. Allo stesso modo, se l'SLI diminuisce, diminuisce anche la soddisfazione degli utenti. Il miglioramento del valore di un buon SLI corrisponde al miglioramento della soddisfazione degli utenti.

  • Gli SLI producono misurazioni comprese tra 0% e 100%.

    Un buon SLI produce una misurazione delle prestazioni compresa tra 0% e 100%: questo intervallo è intuitivo e facile da utilizzare. Ad esempio, un rendimento SLI del 100% significa che tutto funziona, mentre un rendimento SLI dello 0% significa che nulla funziona.

    Un SLI compreso tra 0% e 100% rende l'impostazione di uno SLO sull'SLI facile e chiara: assegna una percentuale target, ad esempio 99,9%, e le prestazioni dell'SLI devono essere pari o superiori a questo target affinché il servizio soddisfi il suo SLO.

Promesse

Un modo per implementare un SLI con queste proprietà è pensare all'SLI in termini di promesse fatte agli utenti. Contando le promesse che hai fatto e mantenuto in un determinato periodo di tempo, puoi ottenere un numero compreso tra 0% e 100%. Questi SLI si traducono bene anche in budget di errore: per un determinato SLO, il budget di errore è il numero di promesse che puoi non rispettare in un periodo di tempo senza comunque soddisfare lo SLO.

Ecco alcuni esempi di promesse:

  • Per restituire una risposta con un codice di stato HTTP 200 alla richiesta di un cliente.
  • Per rispondere a una richiesta gRPC in meno di 100 ms.
  • Per completare correttamente il flusso di lavoro "Crea macchina virtuale".
  • Per pubblicare i dati aggiornati negli ultimi 10 minuti.
  • Per iniziare a eseguire il job batch pianificato entro un minuto dall'orario di inizio.

Specifiche e implementazioni degli SLI

Una specifica SLI è ciò che vuoi misurare. La specifica non include i dettagli tecnici esatti di come misurarla. Ad esempio, di seguito è riportata una specifica di un SLI per il tempo di caricamento della pagina:

  • La percentuale di richieste della home page che vengono caricate in meno di 100 ms.

Esistono molti modi per misurare un indicatore SLI, ognuno con compromessi e vantaggi. I modi per misurare l'SLI sono le implementazioni dell'SLI. Ad esempio, potresti implementare la specifica di caricamento della pagina in uno dei seguenti modi:

  • Il campo latenza del log delle richieste del server delle applicazioni.
  • Metriche esportate dal server delle applicazioni.
  • Metriche esportate da un bilanciatore del carico prima dei server delle applicazioni.
  • Un servizio di monitoraggio black box che invia richieste artificiali al sistema e misura il tempo necessario per ricevere risposte valide.
  • Codice specifico dell'applicazione eseguito nel browser del cliente che registra le informazioni sul timing e le invia a un servizio di raccolta.

Ognuna di queste scelte comporta compromessi tra le seguenti caratteristiche:

  • Fedeltà: il livello di precisione con cui acquisisce l'esperienza utente.
  • Copertura: la percentuale di interazioni degli utenti misurate.
  • Costo: l'importo di denaro e il tempo di ingegneria necessari per creare e mantenere la soluzione.

La fedeltà all'esperienza utente di solito migliora quando l'SLI viene misurato più vicino all'utente. Ad esempio, l'implementazione che utilizza il codice nel browser dell'utente produce una misurazione più accurata della latenza rispetto alla latenza percepita dall'utente o da altre scelte di misurazione.

Il compromesso è che la misurazione basata sul browser include anche qualsiasi latenza introdotta dalla connessione dell'utente al tuo servizio. Ad esempio, quando un servizio viene utilizzato su internet pubblico, questa latenza può variare in modo significativo in base alla posizione geografica o alle condizioni di rete.

Il risultato è che l'indicatore basato sul browser è un buon proxy per la soddisfazione degli utenti. Tuttavia, questo segnale potrebbe non fornire informazioni utili che puoi utilizzare per migliorare l'affidabilità del tuo servizio.

Per informazioni su come combinare più misurazioni per bilanciare questo compromesso, consulta questo articolo di The Telegraph.

Bucketing

Potresti aver bisogno di più indicatori SLI per un servizio quando il servizio svolge diversi tipi di lavoro per utenti diversi o quando svolge un'attività specifica con risultati possibili diversi.

Attività diverse

I servizi che svolgono più tipi di lavoro, per diverse categorie di utenti, e in cui ogni tipo di lavoro influenza la soddisfazione degli utenti in modo diverso traggono vantaggio da più SLI.

Ad esempio, se il tuo servizio gestisce sia le richieste di lettura che di scrittura, gli utenti che eseguono queste attività potrebbero avere requisiti diversi:

  • Le richieste di lettura devono essere veloci.
  • Le richieste di scrittura devono essere completate.

Per acquisire questi diversi requisiti, l'indicatore SLI deve essere in grado di distinguere tra questi due casi. In genere, la metrica SLI ha un'etichetta che puoi utilizzare per classificare i valori in uno dei vari bucket.

Un'attività con risultati diversi

I servizi che eseguono un solo tipo di lavoro, ma in cui le aspettative degli utenti variano in base alla risposta, traggono vantaggio da più SLI.

Ad esempio, se il tuo servizio offre solo l'accesso in lettura ai dati, gli utenti potrebbero avere una tolleranza diversa alla latenza a seconda del risultato della richiesta:

  • Gli utenti potrebbero tollerare gli errori restituiti rapidamente, perché possono riprovare immediatamente la richiesta.
  • Gli utenti potrebbero essere meno tolleranti nei confronti delle richieste riuscite che richiedono molto tempo.
  • Gli utenti sono meno tolleranti allo scenario peggiore: le richieste che impiegano molto tempo per restituire un errore.

In questo caso, l'indicatore SLI di latenza deve essere in grado di distinguere tra richieste riuscite e non riuscite.

Passaggi successivi

Per informazioni sull'implementazione degli indicatori di livello del servizio per i servizi Google Cloud utilizzando le metricheGoogle Cloud , consulta le seguenti risorse:

Per informazioni sull'implementazione degli indicatori di livello del servizio specifici dell'applicazione, consulta quanto segue:

Per un esempio che illustra come creare un SLI per i servizi che segnalano metriche personalizzate, consulta Impostazione degli SLO: osservabilità utilizzando metriche personalizzate.