Scrivere interrogazioni sulle espressioni - Grafana gestito da Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scrivere interrogazioni sulle espressioni

Questo argomento della documentazione è progettato per le aree di lavoro Grafana che supportano la versione 10.x di Grafana.

Per le aree di lavoro Grafana che supportano la versione 9.x di Grafana, vedere. Lavorare nella versione 9 di Grafana

Per le aree di lavoro Grafana che supportano la versione 8.x di Grafana, vedere. Funzionamento in Grafana versione 8

Le espressioni lato server consentono di manipolare i dati restituiti dalle query con operazioni matematiche e di altro tipo. Le espressioni creano nuovi dati e non manipolano i dati restituiti dalle fonti di dati.

Informazioni sulle espressioni

Le espressioni lato server consentono di manipolare i dati restituiti dalle query con operazioni matematiche e di altro tipo. Le espressioni creano nuovi dati e non manipolano i dati restituiti dalle fonti di dati, a parte alcune piccole ristrutturazioni dei dati per rendere i dati accettabili come input per le espressioni.

Utilizzo delle espressioni

Le espressioni sono più comunemente utilizzate dagli avvisi Grafana. L'elaborazione viene eseguita sul lato server, quindi le espressioni possono funzionare senza una sessione del browser. Tuttavia, le espressioni possono essere utilizzate anche con fonti di dati e visualizzazioni di backend.

Nota

Le espressioni non funzionano con gli avvisi del dashboard legacy.

Le espressioni hanno lo scopo di aumentare le fonti di dati abilitando la combinazione di query provenienti da diverse fonti di dati o fornendo operazioni non disponibili in un'origine dati.

Nota

Quando possibile, è necessario eseguire l'elaborazione dei dati all'interno della fonte dati. La copia dei dati dallo storage al server Grafana per l'elaborazione è inefficiente, quindi le espressioni sono destinate all'elaborazione leggera dei dati.

Le espressioni funzionano con le query relative alle fonti di dati che restituiscono serie temporali o dati numerici. Funzionano anche su dati multidimensionali. Ad esempio, una query che restituisce più serie, in cui ogni serie è identificata da etichette o tag.

Una singola espressione accetta una o più interrogazioni o altre espressioni come input e aggiunge dati al risultato. Ogni singola espressione o query è rappresentata da una variabile che è un identificatore denominato noto come refID (ad esempio, la lettera predefinita o). A B

Per fare riferimento all'output di una singola espressione o di una query di origine dati in un'altra espressione, questo identificatore viene utilizzato come variabile.

Tipi di espressioni

Le espressioni funzionano con due tipi di dati.

  • Una raccolta di serie temporali.

  • Una raccolta di numeri, in cui ogni numero è un elemento.

Ogni raccolta viene restituita da una singola query o espressione di origine dati e rappresentata dal RefID. Ogni raccolta è un insieme, in cui ogni elemento del set è identificato in modo univoco dalle sue dimensioni, memorizzate come etichette o coppie chiave-valore.

Interrogazioni sull'origine dei dati

Le espressioni lato server supportano solo le query sulle origini dati per le fonti di dati di backend. Si presume generalmente che i dati siano etichettati come dati di serie temporali.

Le query sulle fonti di dati, se utilizzate con le espressioni, vengono eseguite dal motore delle espressioni. Quando esegue questa operazione, ristruttura i dati in modo che siano costituiti da una serie temporale o da un numero per frame di dati. Quindi, ad esempio, se si utilizza un'origine dati che restituisce più serie su un frame nella visualizzazione per tabella, si potrebbe notare che ha un aspetto diverso quando viene eseguita con espressioni.

Attualmente, l'unico formato non di serie temporale (numero) supportato quando si utilizzano i frame di dati è una risposta in tabella che restituisce un frame di dati senza ora, colonne di stringhe e una colonna numerica:

La seguente tabella di esempio produce un numero che funziona con le espressioni. Le colonne di stringhe diventano etichette e la colonna numerica il valore corrispondente. Ad esempio {"Loc": "MIA", "Host": "A"} con un valore pari a 1.

Loc Host AVG_CPU

MIA

A

1

NYC

B

2

Operazioni

È possibile utilizzare le seguenti operazioni nelle espressioni: math, reduce e resample.

Math (Matematica)

La matematica serve per formule matematiche in formato libero su serie temporali o dati numerici. Le operazioni matematiche prendono come input numeri e serie temporali e li modificano in numeri e serie temporali diversi.

Ad esempio, ai dati di altre query o espressioni viene fatto riferimento con il RefID preceduto dal simbolo del dollaro. $A Se la variabile ha degli spazi nel nome, puoi usare una sintassi tra parentesi come. ${my variable}

Le costanti numeriche possono essere in formato decimale (2.24), ottale (con uno zero iniziale come) o esadecimale (con uno 0x iniziale072). 0x2A Sono supportati anche esponenziali e segni (ad esempio,). -0.8e-2

Operatori

Sono supportati gli operatori aritmetici (+binari e unari-,*,/,%, esponenti**), relazionali (<,,,>, == !=>=,<=) e logici (&&||, e unari). !

Il comportamento dell'operazione con i dati dipende dal fatto che si tratti di dati numerici o di serie temporali.

Con le operazioni binarie, come $A + $B o$A || $B, l'operatore viene applicato nei seguenti modi a seconda del tipo di dati:

  • Se entrambi $A e $B sono numeri, l'operazione viene eseguita tra i due numeri.

  • Se una variabile è un numero e l'altra variabile è una serie temporale, viene eseguita l'operazione tra il valore di ogni punto della serie temporale e il numero.

  • Se entrambe $A le serie $B sono dati di serie temporali, l'operazione tra ogni valore delle due serie viene eseguita per ogni indicatore temporale presente in entrambe $A e$B. L'Resampleoperazione può essere utilizzata per allineare i timestamp.

Riepilogo:

  • Numero <Operation>numero = numero

  • <Operation>Serie numerica = serie

  • Serie <Operation>serie = serie

Poiché le espressioni funzionano con più serie o numeri rappresentati da una singola variabile, le operazioni binarie eseguono anche un'unione (unione) tra le due variabili. Questa operazione viene eseguita sulla base delle etichette identificative associate a ogni singola serie o numero.

Quindi, se hai numeri con etichette come {host=web01} in $A e un altro numero $B con le stesse etichette, l'operazione viene eseguita tra questi due elementi all'interno di ciascuna variabile e il risultato condividerà le stesse etichette. Le regole per il comportamento di questa unione sono le seguenti:

  • Un articolo senza etichette si unirà a qualsiasi cosa.

  • Se $B entrambi $A contengono un solo elemento (una serie o un numero), si uniranno.

  • Se le etichette corrispondono esattamente, si uniranno.

  • Se le etichette sono un sottoinsieme delle altre, ad esempio un elemento in $A è etichettato {host=A,dc=MIA} e un elemento in $B è etichettato, si {host=A} uniranno.

  • Se all'interno di una variabile, ad esempio, $A ci sono diverse chiavi di tag per ogni elemento, il comportamento di unione non è definito.

Gli operatori relazionali e logici restituiscono 0 per falso, 1 per vero.

Funzioni matematiche

Sebbene la maggior parte delle funzioni sia presente nelle operazioni di espressione proprie, l'operazione matematica presenta alcune funzioni simili agli operatori o ai simboli matematici. Quando le funzioni possono accettare numeri o serie, verrà restituito lo stesso tipo dell'argomento. Quando si tratta di una serie, l'operazione viene eseguita per il valore di ogni punto della serie.

addominali

abs restituisce il valore assoluto del suo argomento che può essere un numero o una serie. Ad esempio: abs(-1) o abs($A).

is_inf

is_inf accetta un numero o una serie e restituisce 1 Inf valori (negativi o positivi) e 0 altri valori. Ad esempio is_inf($A).

Nota

Se devi verificare specificamente l'infinito negativo, ad esempio, puoi fare un confronto come. $A == infn()

is_nan

is_nan prende un numero o una serie e restituisce valori e 1 altri NaN valori. 0 Ad esempio is_nan($A). Questa funzione è necessaria per questo controllo perché non NaN è uguale a. NaN

is_null

is_null accetta un numero o una serie e restituisce valori e altri valori1. null 0 Ad esempio is_null($A).

is_number

is_number prende un numero o una serie e restituisce tutti 1 i valori numerici reali e 0 gli altri valori (che sononull,Inf+, Inf- e). NaN Ad esempio is_number($A).

registro

Log restituisce il logaritmo naturale del suo argomento, che può essere un numero o una serie. Se il valore è inferiore a 0, NaN viene restituito. Ad esempio: log(-1) o log($A).

inf, infn, nan e null

Le funzioni inf, infn, nan e null restituiscono tutte un singolo valore del nome. Esistono principalmente per i test. Esempio: null().

rotondo

Round restituisce un valore intero arrotondato. Ad esempio round(3.123) o round($A).

soffitto

Ceil arrotonda il numero al valore intero più vicino. Ad esempio, ceil(3.123) restituisce 4.

pavimento

Floor arrotonda il numero per difetto al valore intero più vicino. Ad esempio,floor(3.123) restituisce. 3

Ridurre

Reduce prende una o più serie temporali restituite da una query o un'espressione e trasforma ogni serie in un unico numero. Le etichette delle serie temporali vengono conservate come etichette su ogni numero ridotto emesso.

Campi:

  • Funzione: la funzione di riduzione da utilizzare

  • Input: la variabile (RefID (ad esempioA)) da ricampionare

  • Modalità: consente il comportamento di controllo della funzione di riduzione quando una serie contiene valori non numerici (null, NaN, +-Inf)

Funzioni di riduzione

Conteggio

Count restituisce il numero di punti in ogni serie.

Significa

La media restituisce il totale di tutti i valori di ogni serie diviso per il numero di punti di quella serie. In strict modalità se alcuni valori della serie sono null o nan, o se la serie è vuota, viene restituito NaN.

Min e Max

Min e Max restituiscono rispettivamente il valore più piccolo o più grande della serie. In strict modalità se alcuni valori della serie sono null o nan, o se la serie è vuota, viene restituito NaN.

Somma

Sum restituisce il totale di tutti i valori della serie. Se la serie è di lunghezza zero, la somma sarà 0. In strict modalità, se nella serie sono presenti valori NaN o Null, viene restituito NaN.

Ultimo

Ultimo restituisce l'ultimo numero della serie. Se la serie non ha valori, restituisce NaN.

Modalità di riduzione

Rigido

In modalità Strict, la serie di input viene elaborata così com'è. Se alcuni valori della serie non sono numerici (null, NaN o +-Inf), viene restituito NaN.

Elimina caratteri non numerici

In questa modalità tutti i valori non numerici (null, NaN o +-Inf) nella serie di input vengono filtrati prima di eseguire la funzione di riduzione.

Sostituisci valori non numerici

In questa modalità tutti i valori non numerici vengono sostituiti da un valore predefinito.

Ricampionamento

Resample modifica i timestamp di ogni serie temporale per avere un intervallo di tempo coerente. Il caso d'uso principale consiste nel ricampionare serie temporali che non condividono gli stessi timestamp in modo da poter eseguire operazioni matematiche tra di esse. Ciò può essere fatto ricampionando ciascuna delle due serie e quindi eseguendo un'operazione matematica facendo riferimento alle variabili ricampionate.

Campi:

  • Input: la variabile dei dati delle serie temporali (RefID (ad esempioA)) da ricampionare

  • Ricampionamento a: la durata del ricampionamento, ad esempio. 10s Le unità possono essere s espresse in secondi, m h minuti, d ore, giorni, w settimane e y anni.

  • Downsample: la funzione di riduzione da utilizzare quando sono presenti più di un punto dati per campione di finestra. Vedi l'operazione di riduzione per i dettagli sul comportamento.

  • Upsample: il metodo da utilizzare per riempire un esempio di finestra senza punti dati.

    • il pad si riempie con l'ultimo valore noto

    • riempimento con il successivo valore noto

    • fillna per riempire le finestre di esempio vuote con NaNs

Scrivere un'espressione

Se la tua fonte di dati li supporta, Grafana visualizza il pulsante Espressione e mostra tutte le espressioni esistenti nell'elenco dell'editor di query.

Per scrivere un'espressione
  1. Aprire il pannello.

  2. Sotto l'interrogazione, scegliete Espressione.

  3. Nel campo Operazione, seleziona il tipo di espressione che desideri scrivere.

  4. Scrivi l'espressione.

  5. Scegli Applica.

Casi speciali

Quando un'origine dati interrogata non restituisce serie o numeri, viene restituito il motore di espressione. NoData Ad esempio, se una richiesta contiene due query sull'origine dati che vengono unite da un'espressione, se NoData viene restituita da almeno una delle query sull'origine dati, il risultato restituito per l'intera query è. NoData Per ulteriori informazioni su come Grafana Alerting elabora i NoData risultati, vedere. Configura le regole di avviso gestite da Grafana

Nel caso di utilizzo di un'espressione su più query, il motore di espressione richiede che tutte le query restituiscano un timestamp identico. Ad esempio, se si utilizza la matematica per combinare il risultato di più query SQL utilizzate da ciascunaSELECT NOW() AS "time", l'espressione funzionerà solo se tutte le query restituiscono un timestamp identico, cosa che non sempre accade. NOW() Per risolvere questo problema, è possibile sostituirlo NOW() con un orario arbitrario, ad esempioSELECT 1 AS "time", o qualsiasi altro timestamp UNIX valido.