series_metric_fl()
La series_metric_fl()
funzione è una funzione definita dall'utente che seleziona e recupera una serie temporale di metriche inserite nel cluster usando il sistema di monitoraggio Prometheus . Questa funzione presuppone che i dati archiviati nel cluster siano strutturati seguendo il modello di dati Prometheus. In particolare, ogni record contiene:
- timestamp
- nome metrica
- valore della metrica
- un set di variabili di etichette (
"key":"value"
coppie)
Prometheus definisce una serie temporale in base al nome della metrica e a un set distinto di etichette. È possibile recuperare set di serie temporali usando Prometheus Query Language (PromQL) specificando il nome della metrica e il selettore delle serie temporali (un set di etichette).
Sintassi
T | invoke series_metric_fl(
,
timestamp_col,
name_col,
labels_col,
value_col,
metric_name,
labels_selectorlookback,
compensare)
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
timestamp_col | string |
✔️ | Nome della colonna contenente il timestamp. |
name_col | string |
✔️ | Nome della colonna contenente il nome della metrica. |
labels_col | string |
✔️ | Nome della colonna contenente il dizionario delle etichette. |
value_col | string |
✔️ | Nome della colonna contenente il valore della metrica. |
metric_name | string |
✔️ | Serie temporale della metrica da recuperare. |
labels_selector | string |
Stringa del selettore di serie temporali, simile a PromQL. Si tratta di una stringa contenente un elenco di "key":"value" coppie, ad esempio '"key1":"val1","key2":"val2"' . Il valore predefinito è una stringa vuota, ovvero nessun filtro. Si noti che le espressioni regolari non sono supportate. |
|
lookback | timespan |
Vettore di intervallo da recuperare, simile a PromQL. Il valore predefinito è 10 minuti. | |
offset | datetime |
Eseguire l'offset dall'ora corrente al recupero, simile a PromQL. I dati vengono recuperati da ago(offset)-lookback ad ago(offset). Il valore predefinito è 0, il che significa che i dati vengono recuperati fino a now() . |
Definizione di funzione
È possibile definire la funzione incorporando il codice come funzione definita da query o creandola come funzione archiviata nel database, come indicato di seguito:
Definire la funzione usando l'istruzione let seguente. Non sono necessarie autorizzazioni.
Importante
Un'istruzione let non può essere eseguita autonomamente. Deve essere seguita da un'istruzione di espressione tabulare. Per eseguire un esempio funzionante di series_metric_fl()
, vedere Esempi.
let series_metric_fl=(metrics_tbl:(*), timestamp_col:string, name_col:string, labels_col:string, value_col:string, metric_name:string, labels_selector:string='', lookback:timespan=timespan(10m), offset:timespan=timespan(0))
{
let selector_d=iff(labels_selector == '', dynamic(['']), split(labels_selector, ','));
let etime = ago(offset);
let stime = etime - lookback;
metrics_tbl
| extend timestamp = column_ifexists(timestamp_col, datetime(null)), name = column_ifexists(name_col, ''), labels = column_ifexists(labels_col, dynamic(null)), value = column_ifexists(value_col, 0)
| extend labels = dynamic_to_json(labels) // convert to string and sort by key
| where name == metric_name and timestamp between(stime..etime)
| order by timestamp asc
| summarize timestamp = make_list(timestamp), value=make_list(value) by name, labels
| where labels has_all (selector_d)
};
// Write your query to use the function here.
Esempio
Negli esempi seguenti viene usato l'operatore invoke per eseguire la funzione .
Con la specifica del selettore
Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.
let series_metric_fl=(metrics_tbl:(*), timestamp_col:string, name_col:string, labels_col:string, value_col:string, metric_name:string, labels_selector:string='', lookback:timespan=timespan(10m), offset:timespan=timespan(0))
{
let selector_d=iff(labels_selector == '', dynamic(['']), split(labels_selector, ','));
let etime = ago(offset);
let stime = etime - lookback;
metrics_tbl
| extend timestamp = column_ifexists(timestamp_col, datetime(null)), name = column_ifexists(name_col, ''), labels = column_ifexists(labels_col, dynamic(null)), value = column_ifexists(value_col, 0)
| extend labels = dynamic_to_json(labels) // convert to string and sort by key
| where name == metric_name and timestamp between(stime..etime)
| order by timestamp asc
| summarize timestamp = make_list(timestamp), value=make_list(value) by name, labels
| where labels has_all (selector_d)
};
demo_prometheus
| invoke series_metric_fl('TimeStamp', 'Name', 'Labels', 'Val', 'writes', '"disk":"sda1","host":"aks-agentpool-88086459-vmss000001"', offset=now()-datetime(2020-12-08 00:00))
| render timechart with(series=labels)
Output
Senza specificare il selettore
L'esempio seguente non specifica il selettore, quindi vengono selezionate tutte le metriche "scritture". In questo esempio si presuppone che la funzione sia già installata e usi una sintassi di chiamata diretta alternativa, specificando la tabella di input come primo parametro:
Per usare una funzione definita da query, richiamarla dopo la definizione della funzione incorporata.
let series_metric_fl=(metrics_tbl:(*), timestamp_col:string, name_col:string, labels_col:string, value_col:string, metric_name:string, labels_selector:string='', lookback:timespan=timespan(10m), offset:timespan=timespan(0))
{
let selector_d=iff(labels_selector == '', dynamic(['']), split(labels_selector, ','));
let etime = ago(offset);
let stime = etime - lookback;
metrics_tbl
| extend timestamp = column_ifexists(timestamp_col, datetime(null)), name = column_ifexists(name_col, ''), labels = column_ifexists(labels_col, dynamic(null)), value = column_ifexists(value_col, 0)
| extend labels = dynamic_to_json(labels) // convert to string and sort by key
| where name == metric_name and timestamp between(stime..etime)
| order by timestamp asc
| summarize timestamp = make_list(timestamp), value=make_list(value) by name, labels
| where labels has_all (selector_d)
};
series_metric_fl(demo_prometheus, 'TimeStamp', 'Name', 'Labels', 'Val', 'writes', offset=now()-datetime(2020-12-08 00:00))
| render timechart with(series=labels, ysplit=axes)
Output
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per