Creazione di un criterio di avviso

I criteri di avviso per la burn rate del budget di errore si basano sul selettore delle serie temporali select_slo_burn_rate, descritto in Recupero dei dati dello SLO. Esistono altri selettori di serie temporali, che puoi utilizzare come base per i criteri di avviso. Per un'analisi dei criteri di avviso basati su SLO, consulta Avvisi sulla burn rate.

Puoi creare criteri di avviso utilizzando il metodo alertPolicies.create. L'utilizzo generale di questo metodo è documentato in Gestire i criteri di avviso.

I criteri di avviso per gli SLO sono simili ad altri criteri di avviso per soglia di metriche, ma differiscono in un modo specifico: filter nella specifica MetricThreshold della condizione utilizza un selettore di serie temporali anziché una coppia di tipi di metriche e risorse monitorate.

Condizioni per i criteri di avviso basati su SLO

Un criterio di avviso deve avere almeno una condizione. Per una condizione basata su SLO, utilizza una condizione di tipo MetricThreshold.

Una condizione di soglia di metriche può contenere due coppie di configurazioni delle serie temporali: filter e aggregations. Poiché i dati SLO vengono recuperati in modo diverso rispetto agli altri dati delle serie temporali, l'unico campo utilizzato in una condizione per uno SLO è il campo filter.

Una condizione per uno SLO imposta i campi comparison, thresholdValue, duration e trigger.

Questo esempio crea una condizione che viene violata quando la velocità di combustione supera il doppio della velocità normale. La struttura ha il seguente aspetto:

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "comparison":"COMPARISON_GT",
        "thresholdValue": 2,
        "duration": {
          "seconds":"0",
        },
      },
    }
  ],

Per impostare il campo filter, ti serve il nome risorsa di uno SLO specifico. Questo valore è nel formato projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Per informazioni su come trovare l'ID SLO, vedi Elencare gli SLO.

Per creare un avviso sulla frequenza di burn rate, utilizza il selettore delle serie temporali select_slo_burn_rate. Questo selettore accetta due valori: lo SLO target e il periodo di riferimento. Per maggiori informazioni, consulta select_slo_burn_rate.

Ad esempio, il seguente filtro ottiene la burn rate dello SLO target con un periodo di ricerca di 1 ora:

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

Il resto del criterio di avviso

Per completare il criterio di avviso, specifica i valori per i campi rimanenti:

  • displayName: una descrizione del criterio di avviso.
  • combiner: descrive la logica per combinare le condizioni. Questo criterio ha una sola condizione, quindi AND o OR funzionano.
  • notificationChannels: un array di canali di notifica esistenti da utilizzare quando viene attivato il criterio di avviso. Per informazioni su come trovare e creare canali di notifica, vedi Canali di notifica.
  • documentation: informazioni inviate quando la condizione viene violata per aiutare i destinatari a diagnosticare il problema. Per maggiori dettagli, vedi Documentation.

Creazione del criterio di avviso

L'esempio seguente utilizza l'API per creare un criterio di avviso per la burn-rate. Per informazioni su come elencare, modificare ed eliminare i criteri di avviso, vedi Gestione dei criteri di avviso tramite API.

Protocollo

Per creare il criterio di avviso utilizzando curl, invia un messaggio POST all'endpoint https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies e fornisci il criterio di avviso nel corpo della richiesta. Il JSON nel corpo della richiesta descrive un criterio di avviso che utilizza una condizione di soglia basata sul selettore della serie temporale select_slo_burn_rate con un periodo temporale di un'ora.

  1. Crea una variabile che contenga il corpo della richiesta:

    CREATE_ALERT_POST_BODY=$(cat <<EOF
    {
      "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
      "combiner":"AND",
      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
      "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
      "documentation": {
         "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.",
         "mime_type": "text/markdown",
      },
    }
    EOF
    )
    
  2. Pubblica la richiesta nell'endpoint:

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies