Criteri di avviso con MQL

Puoi creare criteri di avviso di Monitoring la cui condizione include una query Monitoring Query Language (MQL). Le query MQL per le condizioni dei criterio di avviso sono come altre query MQL, ad eccezione del fatto che includono anche un'operazione di avviso MQL. Se utilizzi MQL in una condizione, questa deve essere l'unica condizione nel criterio.

Questa pagina introduce le operazioni di avviso MQL e descrive come creare un criterio di avviso che le utilizzi. Per informazioni generali sui criteri di avviso di Monitoring, consulta Comportamento dei criteri di avviso basati su metriche.

Inizia

Tutte le query MQL iniziano con i seguenti componenti:

  • Un'operazione fetch, che recupera la serie temporale da Cloud Monitoring.
  • Un argomento, composto da una risorsa monitorata e un tipo di metrica, che identifica le serie temporali da recuperare.

Ad esempio, la seguente query recupera la serie temporale scritta dalle istanze di Compute Engine per il tipo di metrica compute.googleapis.com/instance/cpu/utilization, che registra l'utilizzo della CPU da parte delle istanze:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization

L'argomento del comando fetch è costituito da una risorsa monitorata gce_instance, una coppia di caratteri dei due punti :: e un tipo di metrica compute.googleapis.com/instance/cpu/utilization.

Per utilizzare la query in un criterio di avviso con una condizione basata su MQL, la query deve terminare con un'operazione che definisca i parametri in base ai quali Cloud Monitoring attiva un avviso. L'operazione varia a seconda che tu stia creando un criterio di avviso relativo a una soglia di metriche o un criterio di avviso per l'assenza di metriche.

Query MQL per i criteri di avviso relativi alle soglie di metriche

Le query MQL con soglia di metriche richiedono l'operazione condition, che valuta un'espressione booleana in ogni punto del tempo di esecuzione della query. Se l'espressione restituisce true per tutti i punti nella finestra di durata, Cloud Monitoring attiva un avviso.

Ad esempio, la seguente query valuta le istanze VM di Compute Engine e attiva un avviso se un'istanza ha scritto più di 5 gigabyte sul disco nelle ultime 24 ore:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition val() > 5'GBy'

Puoi utilizzare condizioni complesse per valutare intervalli di dati specifici. Ad esempio, la seguente condizione attiva un avviso se un'istanza VM nelle ultime 24 ore ha scritto più di 5 gigabyte e meno di 6 gigabyte di dati o più di 8 gigabyte di dati:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition (val() > 5'GBy' && val() < 6'GBy') || val() > 8'GBy'

L'esempio seguente utilizza filter, un'operazione group_by scorrevole e una condizione complessa per valutare ciascun punto dati in una tabella di input allineata e determinare se il valore di utilizzo supera il valore della soglia del 15%:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| group_by sliding(5m), mean(val())
| every 30s
| condition val() > .15 '10^2.%'

Nella query precedente, la tabella derivante dall'operatore condition ha due colonne di valori: una colonna booleana che registra il risultato della valutazione della soglia e una seconda contenente una copia della colonna di valori utilization della tabella di input. Poiché l'impostazione predefinita della finestra group_by è scorrevole, l'espressione group_by è identica a group_by 5m, mean(val()).

Il valore di utilizzo della CPU viene memorizzato come utilizzo frazionario; i valori sono compresi tra 0,0 e 1,0. Il descrittore della metrica specifica l'unità per questo valore come 10^2.%, visualizzata nel grafico in percentuale. Le unità per la soglia devono essere compatibili, quindi la soglia esprimiamo .15 '10^2.%.

Query MQL per i criteri di avviso per l'assenza di metriche

Le query MQL per assenza di metriche utilizzano l'operazione absent_for, che prevede una durata per cui mancano dati. Ad esempio, la seguente query esegue un test per verificare se per otto ore mancano dati dalle zone centrali degli Stati Uniti:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| every 30s
| absent_for 8h

L'operazione absent_for richiede solo un argomento di durata, che indica per quanto tempo i dati devono essere assenti per soddisfare la condizione.

I dati sono considerati assenti se sono apparsi nelle ultime 24 ore, ma non entro la durata, in questo esempio le ultime otto ore.

Una query absent_for crea una tabella di output con valori allineati, utilizzando l'allineamento predefinito o un'operazione every dopo l'operazione absent_for.

La tabella di output ha due colonne.

  • La prima è la colonna active, che registra i risultati booleani per l'assenza di dati. Un valore true indica che è stato rilevato un punto di input nelle ultime 24 ore e nessuno nel periodo di durata.

  • La seconda colonna è quella signal. Se la tabella di input contiene colonne di valori, la colonna signal conterrà il valore della prima colonna di valori del punto di input più recente. Se la tabella di input non ha colonne di valori, la colonna signal conterrà il numero di minuti dall'ultimo punto di input registrato. Puoi forzare questa richiesta, come mostrato nell'esempio seguente:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | every 30s
    | absent_for 8h
    

    Nell'esempio precedente, l'operazione value [] rimuove le colonne dei valori dalla tabella di input, pertanto la colonna signal nella tabella creata dall'operazione absent_for contiene il numero di minuti dall'ultimo punto di input.

Configurazione dei criteri di avviso

Oltre alla query MQL, una condizione del criterio di avviso include altri due valori:

  • Il numero di serie temporali di input che deve soddisfare la condizione. Il valore può essere uno dei seguenti:
    • Un'unica serie temporale.
    • Un numero specifico di serie temporali.
    • Una percentuale di serie temporali.
    • Tutte le serie temporali.
  • La durata dello stato dell'avviso, ovvero per quanto tempo la condizione dell'avviso deve essere valutata continuamente in base a true.

Se la query restituisce continuamente true per la durata specificata per una determinata serie temporale, quella serie temporale è considerata attiva. Quando è attivo il numero specificato di serie temporali, viene attivato il criterio di avviso e viene generato un avviso per ogni serie temporale attiva. Per saperne di più su come vengono valutati i criteri di avviso, consulta Comportamento dei criteri di avviso basati su metriche.

Quando i dati della serie temporale non arrivano o subiscono un ritardo, Monitoring li classifica come mancanti. Per informazioni su come configurare Monitoring per valutare le condizioni di soglia delle metriche all'arrivo dei dati, consulta Dati delle metriche parziali.

Se utilizzi MQL in una condizione, questa deve essere l'unica condizione nel criterio. Non puoi utilizzare più condizioni nei criteri di avviso basati su MQL.

Linee guida

MQL consente di creare etichette definite dall'utente e di associarle agli incidenti. Ad esempio, consulta Aggiungere livelli di gravità a un criterio di avviso.

Le unità per i tipi di metriche sono elencate nella relativa tabella dei tipi di metriche; per il tipo di metrica compute.googleapis.com/instance/cpu/utilization, consulta la tabella compute.

Passaggi successivi

Per informazioni su come utilizzare la console Google Cloud e l'API Cloud Monitoring per creare un criterio di avviso con una condizione basata su MQL, consulta Creare avvisi MQL.

Per un elenco di linee guida e suggerimenti per la configurazione di criteri di avviso efficaci con una condizione basata su MQL, consulta Best practice per gli avvisi MQL.

Per informazioni su come risolvere i problemi comuni relativi ai criteri di avviso con una condizione basata su MQL, consulta Risolvere i problemi relativi agli avvisi MQL.

Per esempi di criteri di avviso con una condizione basata su MQL, consulta Casi d'uso per gli avvisi MQL.