series_metric_fl()
Funkce series_metric_fl()
je uživatelem definovaná funkce, která vybírá a načítá časové řady metrik přijatých do clusteru pomocí monitorovacího systému Prometheus . Tato funkce předpokládá, že data uložená v clusteru jsou strukturovaná podle datového modelu Prometheus. Konkrétně každý záznam obsahuje:
- časové razítko
- název metriky
- hodnota metriky
- proměnná sada popisků (
"key":"value"
páry)
Prometheus definuje časovou řadu podle názvu metriky a jedinečné sady popisků. Sady časových řad můžete načíst pomocí jazyka Prometheus Query Language (PromQL) zadáním názvu metriky a voliče časových řad (sady popisků).
Syntax
T | invoke series_metric_fl(
,
timestamp_col,
name_col,
labels_col,
value_col,
metric_name,
labels_selectorlookback,
Posun)
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
timestamp_col | string |
✔️ | Název sloupce obsahujícího časové razítko. |
name_col | string |
✔️ | Název sloupce, který obsahuje název metriky. |
labels_col | string |
✔️ | Název sloupce obsahujícího slovník popisků. |
value_col | string |
✔️ | Název sloupce obsahujícího hodnotu metriky. |
metric_name | string |
✔️ | Časová řada metrik, která se má načíst. |
labels_selector | string |
Řetězec selektoru časových řad podobný řetězci PromQL. Jedná se o řetězec obsahující seznam párů "key":"value" , například '"key1":"val1","key2":"val2"' . Výchozí hodnota je prázdný řetězec, což znamená, že se nefiltruje. Všimněte si, že regulární výrazy nejsou podporovány. |
|
lookback | timespan |
Vektor rozsahu, který se má načíst, podobný PromQL. Výchozí hodnota je 10 minut. | |
Posun | datetime |
Posun zpět od aktuálního času pro načtení, podobně jako PromQL. Data se načítají z ago(offset)-lookback do ago(offset). Výchozí hodnota je 0, což znamená, že se data načítají až do now() hodnoty . |
Definice funkce
Funkci můžete definovat vložením jejího kódu jako funkce definované dotazem nebo jejím vytvořením jako uložené funkce v databázi, a to následujícím způsobem:
Definujte funkci pomocí následujícího příkazu let. Nejsou vyžadována žádná oprávnění.
Důležité
Příkaz let nelze spustit samostatně. Musí za ním následovat příkaz tabulkového výrazu. Pokud chcete spustit funkční příklad , podívejte se na series_metric_fl()
příklady.
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.
Příklady
V následujících příkladech se ke spuštění funkce používá operátor invoke .
Se zadaným selektorem
Pokud chcete použít funkci definovanou dotazem, vyvolejte ji po definici vložené funkce.
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)
Výstup
Bez zadání selektoru
Následující příklad neurčí selektor, takže se vyberou všechny metriky zápisů. Tento příklad předpokládá, že funkce je už nainstalovaná, a používá alternativní syntaxi přímého volání, která jako první parametr určuje vstupní tabulku:
Pokud chcete použít funkci definovanou dotazem, vyvolejte ji po definici vložené funkce.
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)
Výstup
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro