Casi d'uso per gli avvisi MQL

Criteri di avviso con una condizione basata su Monitoring Query Language (MQL) consentono di configurare l'ambiente di avviso per molti possibili casi d'uso. Alcune configurazioni sono disponibili solo tramite l'uso di per le query MQL.

Questo documento descrive diversi casi d'uso e query di esempio per il deployment di criteri di avviso con una condizione basata su MQL in un nell'ambiente di produzione.

Avviso sulle soglie dinamiche

Puoi utilizzare una query MQL per configurare un criterio di avviso che attiva avvisi in base a una soglia che varia nel tempo, ad esempio come giorni della settimana. Questa configurazione non è supportata negli avvisi condizioni dei criteri senza query MQL.

Ad esempio: esiste una query MQL che invia un avviso se l'utilizzo della CPU di un'istanza Compute Engine supera il 95%:

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| condition utilization > 95'%'

Tuttavia, vuoi impostare una soglia di utilizzo più bassa, ad esempio 85%, nei fine settimana, per tenere conto dei tempi di risposta più lunghi da parte del team di assistenza. In questo caso, potresti configurare la query con una colonna di valori che contenga la soglia di avviso:

fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization
| align
| every 30s
| value add [day_of_week: end().timestamp_to_string('%w').string_to_int64]
| value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6]
| value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')]
| condition utilization > scale(max_allowed_utilization)

Le operazioni value:

  • value add [day_of_week: end().timestamp_to_string('%w').string_to_int64] aggiunge una colonna di valori il cui valore è un numero compreso tra 0 e 6, dove 0 è domenica e 6 è sabato.
  • value [utilization, is_weekend: day_of_week = 0 || day_of_week = 6] sostituisce il numero del giorno con un valore booleano che indica se il punto dati era in un fine settimana o in un giorno feriale.
  • value [utilization, max_allowed_utilization: if(is_weekend, 85'%', 95'%')] sostituisce il valore booleano con una soglia che varia a seconda del valore di is_weekend.

La condizione, condition utilization > scale(max_allowed_utilization), le due colonne di valori.

Ecco un esempio di criterio di avviso con una condizione basata su MQL che configura i livelli di gravità degli incidenti in base a criteri dinamici (consulta Crea livelli di gravità dinamica utilizzando MQL.

Avvisa sulle soglie in base al tasso di variazione

Puoi configurare le query MQL del criterio di avviso per valutare le soglie in base al tasso di variazione di una metrica. Ad esempio, vuoi valutare la percentuale di 5xx errori per istanza di resource.method nel Richieste API, dove la tua tariffa equivale a richieste al secondo. Se il tasso è superiore a 5 risposte di errore al secondo, allora Cloud Monitoring invia un avviso:

fetch consumed_api
| metric 'serviceruntime.googleapis.com/api/request_count'
| filter (metric.response_code_class == '5xx')
| align rate(10m)
| every 30s
| group_by [resource.method],
    [value_request_count_mean: mean(value.request_count)]
| condition val() > 0.05'1/s'

Puoi creare criteri di avviso relativi alla frequenza di modifica senza utilizzare MQL:

Avviso sulle soglie basate su rapporto

Il criterio di avviso può utilizzare una query MQL per valutare rapporti derivati unendo due metriche e dividendo le colonne dei valori. Ad esempio, vuoi eseguire query sul rapporto di read byte rispetto a write byte per ogni istanza di Compute Engine. Se il rapporto è maggiore 3/5 o 60%, Cloud Monitoring invia un avviso:

{
  fetch gce_instance :: compute.googleapis.com/instance/disk/read_bytes_count;
  fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
}
| every 30s
| join
| value val(0) / val(1)
| condition val() > 0.6

Puoi anche eseguire query sul rapporto dei valori aggregati. Ad esempio, se vuoi calcolare il tempo medio di utilizzo della CPU per core su Compute Engine di Compute Engine. Se il rapporto è maggiore di 3/5 o del 60%: Cloud Monitoring invia un avviso. In questo esempio è necessario includere anche Una funzione cast_units per allineare le unità di misura.

{
  fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
  | group_by [], .sum;
  fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
  | group_by [], .sum | cast_units('s{CPU}')
}
| every 30s
| ratio
| condition val() > 0.6

Puoi creare criteri di avviso basati su un rapporto senza utilizzare MQL: