Casi d'uso per gli avvisi MQL

I 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 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 ambiente di produzione.

Avviso sulle soglie dinamiche

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

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

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

Tuttavia, ti consigliamo di impostare una soglia di utilizzo più bassa, ad esempio 85%, per i 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 del valore che contiene 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 un fine settimana o 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), confronta le due colonne dei valori.

Per 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 Creare livelli di gravità dinamica utilizzando MQL.

Avvisa sulle soglie in base al tasso di variazione

Puoi configurare le query MQL dei criterio di avviso per valutare le soglie in base alla frequenza di modifica di una metrica. Ad esempio, vuoi valutare la percentuale di errori 5xx per istanza di resource.method nelle tue richieste API, dove la percentuale equivale a richieste al secondo. Se la frequenza è superiore a 5 risposte di errore al secondo, 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 i 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 di 3/5 o del 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, vuoi calcolare il tempo di utilizzo medio della CPU per core nelle istanze di Compute Engine. Se il rapporto è superiore a 3/5 o al 60%, Cloud Monitoring invia un avviso. In questo esempio, devi 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: