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 9.x di Grafana.
Per le aree di lavoro Grafana che supportano la versione 10.x di Grafana, vedere. Funzionamento nella versione 10 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 utilizzate principalmente da Grafana Alerting. 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. In futuro intendevamo aggiungere un'asserzione del tipo di dati restituito dalla query (numero o serie temporale) in modo che le espressioni possano gestire meglio gli errori.
Le query relative alle 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:
Loc | Host | AVG_CPU |
---|---|---|
MIA |
A |
1 |
NYC |
B |
2 |
L'esempio precedente produrrà 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.
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 es.). -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'Resample
operazione può essere utilizzata per allineare i timestamp.
Riepilogo:
-
Numero OP = numero
-
Numero serie OP = serie
-
Serie OP = 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 sono matematiche esatte, 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
è{host=A}
etichettato, si 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 esiste 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 esempio
A
)) 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. Questa operazione può essere eseguita 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 esempio
A
)) da ricampionare -
Ricampionamento a: la durata del ricampionamento, ad esempio
10s.
le unità possono esseres
secondi,m
minuti,h
ore, giorni,d
settimane ew
anni.y
-
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 conosciuto
-
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
-
Aprire il pannello.
-
Sotto l'interrogazione, scegliete Espressione.
-
Nel campo Operazione, seleziona il tipo di espressione che desideri scrivere.
-
Scrivi l'espressione.
-
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. Nessuna gestione di dati o casi di errore