Creazione di un indicatore del livello del servizio

Se crei servizi personalizzati, devi creare anche obiettivi del livello di servizio (SLO) per ciascuno di essi. Non esistono SLO predefiniti per i servizi personalizzati.

Puoi anche creare SLO personalizzati per i servizi rilevati automaticamente, ma questo è meno comune.

Gli SLO sono basati su metriche che misurano le prestazioni e vengono utilizzati come indicatori del livello del servizio (SLI). Per gli SLO personalizzati, devi identificare le metriche che vuoi utilizzare negli SLI.

Se non stai creando SLO personalizzati, puoi saltare questa pagina.

Caratteristiche dei tipi di metriche adatti

Puoi creare due tipi di SLO per i tuoi servizi:

  • SLO basati su richiesta.
  • SLO basati su Windows.

Gli SLO si basano sui tipi di metriche che scegli come SLI. I valori nei tipi di metriche sono classificati in base alla loro relazione. Questa classificazione è chiamata tipo di metrica e ha tre valori possibili: GAUGE, DELTA, e CUMULATIVE. Per maggiori informazioni, consulta MetricKind.

Per gli SLO basati su richieste, lo SLI rappresenta un rapporto tra le richieste soddisfacenti e le richieste totali. Il tipo di metrica dello SLI deve essere DELTA o CUMULATIVE. Non puoi utilizzare le metriche GAUGE negli SLO basati su richiesta.

Per gli SLO basati su Windows, lo SLI rappresenta un conteggio di buoni risultati in un determinato periodo. I tipi di metriche accettabili dipendono dalla struttura degli SLI. Per ulteriori informazioni, consulta Strutture per SLI basati su finestre.

Per ulteriori informazioni sui tipi di SLO, consulta Concetti sul monitoraggio dei servizi.

Puoi utilizzare i tipi di metriche forniti da Cloud Monitoring oppure i tipi di metrica personalizzata che hai creato. In entrambi i casi, i valori sono adatti allo SLI che vuoi creare.

Tipi di metriche non adatti

Quando si considera un tipo di metrica da utilizzare come SLI, evita tipi di metriche ad alta cardinalità. La cardinalità descrive il numero di possibili serie temporali che è possibile associare al tipo di metrica ed è correlata alla granularità dei valori supportati dalle etichette delle metriche. Per una discussione sulla cardinalità, consulta Cardinalità: serie temporali ed etichette.

È probabile che i tipi di metriche con etichette che accettano valori come i timestamp abbiano una cardinalità molto elevata e siano una scelta negativa per l'utilizzo come SLI. Le metriche ad alta cardinalità sono spesso metriche definite dall'utente che non sono state progettate per evitare problemi di cardinalità. Queste possono includere metriche basate su log e metriche personalizzate definite dall'utente.

Individuare i tipi di metriche adatti

Le informazioni sui tipi di metriche, compreso il tipo, sono disponibili in più posizioni:

  • Il selettore delle metriche usato in strumenti come Metrics Explorer mostra una scheda popup per il tipo di metrica evidenziato. Questo strumento funziona per le metriche personalizzate e integrate.

    Ad esempio, il seguente screenshot mostra la scheda popup per il tipo di metrica loadbalancing.googleapis.com/https/request_count come mostrato in Metrics Explorer:

    Una metrica di bilanciamento del carico in Metrics Explorer con una scheda popup che mostra il tipo di metrica.

    Con Metrics Explorer, puoi anche configurare la metrica in modo che rispecchi ciò che fa l'API SLO e ottenere una rappresentazione JSON di tale configurazione. Questo JSON è utile per creare manualmente uno SLI.

  • Le pagine nell'elenco Metriche contengono tabelle per ciascun servizio che descrivono in dettaglio i tipi di metriche associati ai servizi. Queste tabelle includono tutti i tipi di metriche integrate, ma non mostrano i tipi di metrica personalizzata.

    Ad esempio, il seguente screenshot mostra la voce relativa al tipo di metrica loadbalancing.googleapis.com/https/request_count come mostrato nell'elenco delle metriche di bilanciamento del carico. Queste voci spesso forniscono più dettagli rispetto alle schede popup in Metrics Explorer.

    Una metrica di bilanciamento del carico nella tabella di riferimento.

Creazione dello SLI

Per il monitoraggio dei servizi, i dati delle metriche vengono elaborati in modi specifici, che puoi replicare in Metrics Explorer. Questa pagina presuppone che tu conosca l'uso di Metrics Explorer. Per ulteriori informazioni, consulta Metrics Explorer.

Per creare uno SLI basato su richieste in base a un rapporto di serie temporali, sono necessarie due serie temporali: una che rappresenta tutte le richieste e una che rappresenti tutte le richieste corrette (o errate). Questo tipo di SLI ha la seguente struttura:

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": TO_BE_IDENTIFIED,
      "goodServiceFilter": TO_BE_IDENTIFIED,
    }
  }

Per ottenere il valore del campo goodServiceFilter:

  1. Seleziona il tipo di risorsa monitorata e il tipo di metrica. Ricorda che il tipo di metrica deve essere DELTA o CUMULATIVE. Il risultato potrebbe includere molte serie temporali diverse.

    Ad esempio, seleziona il tipo di risorsa http_lb_rule e il tipo di metrica loadbalancing.googleapis.com/https/request_count.

  2. Utilizza il campo Filtro per impostare l'etichetta response_code_class su 200. Questo filtro rimuove tutte le serie temporali con altri valori per questa etichetta. Potrebbero comunque esserci più serie temporali corrispondenti.

  3. Scegli l'aggregatore sum per creare un'unica serie temporale. Il grafico nella pagina Metrics Explorer mostra le serie temporali risultanti.

  4. Fai clic su Altre opzioni sopra il grafico e seleziona Visualizza come JSON dal menu.

    Il file JSON recuperato ha un aspetto simile al seguente:

    "dataSets": [
      {
        "timeSeriesFilter": {
          "filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""
          "perSeriesAligner": "ALIGN_RATE",
          "crossSeriesReducer": "REDUCE_SUM",
          "secondaryCrossSeriesReducer": "REDUCE_NONE",
          "minAlignmentPeriod": "60s",
          "groupByFields": [],
          "unitOverride": "1"
        },
        "targetAxis": "Y1",
        "plotType": "LINE"
      }
    ],
    

Il pezzo che ti interessa è il valore del campo filter incorporato nell'oggetto dataSets:

"filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""

Per creare la struttura SLI:

  1. Inserisci questo valore nella struttura SLI come valore del campo goodServiceFilter.

  2. Inserisci questo valore anche nella struttura SLI come valore di totalServiceFilter, ma poi rimuovi la parte del filtro relativa all'etichetta, metric.label.\"response_code_class\"=\"200\".

Di seguito è riportato l'indicatore del livello del servizio risultante:

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
      "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
    }
  }

Puoi quindi inserire questo SLI in uno SLO, ad esempio:

{
   "serviceLevelIndicator": {
      "requestBased": {
        "goodTotalRatio": {
          "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
          "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
        }
     }
   },
   "goal": 0.98,
   "calendarPeriod": "WEEK",
   "displayName": "98% Successful requests in a calendar week"
}

Puoi utilizzare questo JSON per creare uno SLO, come descritto in Creazione di uno SLO.