1 Funkcje agregujące

O ile nie podano inaczej, wszystkie wymienione tutaj funkcje są obsługiwane w:

Funkcje agregujące mogą działać na:

  • historii pozycji, na przykład min(/host/key,1h)
  • funkcjach foreach jako jedynym parametrze, na przykład min(last_foreach(/*/key)) (tylko w pozycjach obliczanych; nie można używać w wyzwalaczach)

Funkcje są wymienione bez dodatkowych informacji. Kliknij funkcję, aby zobaczyć pełne szczegóły.

Function Description
avg Średnia wartość pozycji w zdefiniowanym okresie oceny.
bucket_percentile Oblicza percentyl na podstawie kubełków histogramu.
count Liczba wartości w tablicy zwróconej przez funkcję foreach.
histogram_quantile Oblicza φ-kwantyl na podstawie kubełków histogramu.
item_count Liczba istniejących pozycji w konfiguracji, które spełniają kryteria filtra.
kurtosis „Spiczastość” rozkładu prawdopodobieństwa zebranych wartości w zdefiniowanym okresie oceny.
mad Mediana odchyleń bezwzględnych zebranych wartości w zdefiniowanym okresie oceny.
max Najwyższa wartość pozycji w zdefiniowanym okresie oceny.
min Najniższa wartość pozycji w zdefiniowanym okresie oceny.
skewness Asymetria rozkładu prawdopodobieństwa zebranych wartości w zdefiniowanym okresie oceny.
stddevpop Odchylenie standardowe populacji zebranych wartości w zdefiniowanym okresie oceny.
stddevsamp Odchylenie standardowe próby zebranych wartości w zdefiniowanym okresie oceny.
sum Suma zebranych wartości w zdefiniowanym okresie oceny.
sumofsquares Suma kwadratów zebranych wartości w zdefiniowanym okresie oceny.
varpop Wariancja populacji zebranych wartości w zdefiniowanym okresie oceny.
varsamp Wariancja próby zebranych wartości w zdefiniowanym okresie oceny.

Wspólne parametry

  • /host/key to wspólny obowiązkowy pierwszy parametr dla funkcji odwołujących się do historii pozycji hosta
  • (sec|#num)<:time shift> to wspólny drugi parametr dla funkcji odwołujących się do historii pozycji hosta, gdzie:
    • sec — maksymalny okres obliczania w sekundach (mogą być używane sufiksy czasu), lub
    • #num — maksymalny zakres obliczania w ostatnio zebranych wartościach (jeśli jest poprzedzony znakiem kratki)
    • time shift (opcjonalnie) pozwala przesunąć punkt obliczania wstecz w czasie. Zobacz więcej szczegółów dotyczących określania przesunięcia czasu.

Szczegóły funkcji

Kilka ogólnych uwag dotyczących parametrów funkcji:

  • Parametry funkcji są oddzielane przecinkiem
  • Opcjonalne parametry funkcji (lub części parametrów) są oznaczone przez < >
  • Parametry specyficzne dla danej funkcji są opisane przy każdej funkcji
  • Parametry /host/key oraz (sec|#num)<:time shift> nigdy nie mogą być ujmowane w cudzysłów
avg(/host/key,(sec|#num)<:time shift>)

Średnia wartość pozycji w zdefiniowanym okresie obliczania.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Parametry: zobacz wspólne parametry.

Przesunięcie czasu jest przydatne, gdy zachodzi potrzeba porównania bieżącej wartości średniej ze średnią wartością sprzed pewnego czasu.

Przykłady:

avg(/host/key,1h) #średnia wartość z ostatniej godziny do teraz
avg(/host/key,1h:now-1d) #średnia wartość z jednej godziny w przedziale od 25 do 24 godzin temu
avg(/host/key,#5) #średnia wartość z pięciu najnowszych wartości
avg(/host/key,#5:now-1d) #średnia wartość z pięciu najnowszych wartości z wyłączeniem wartości otrzymanych w ciągu ostatnich 24 godzin
avg(/host/proc.num,5m)>300 #wyzwalacz, jeśli średnia liczba procesów w ciągu ostatnich 5 minut była wyższa niż 300
bucket_percentile(item filter,time period,percentage)

Oblicza percentyl z bucketów histogramu.

Parametry:

  • item filter - zobacz item filter;
  • time period - zobacz time period;
  • percentage - wartość procentowa (0-100).

Uwagi:

  • Obsługiwane tylko w pozycjach obliczanych;
  • Ta funkcja jest aliasem dla histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1)).

Przykłady:

bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #calculate the 95th percentile response time over 5 minutes
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #calculate the 99th percentile API latency
count(func_foreach(item filter,<time period>),<operator>,<pattern>)

Liczba wartości w tablicy zwróconej przez funkcję foreach.
Obsługiwane funkcje foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Parametry:

  • func_foreach - funkcja foreach, dla której ma zostać policzona liczba zwróconych wartości. Szczegóły znajdują się w opisie funkcji foreach. Zwróć uwagę, że count_foreach i bucket_rate_foreach obsługują dodatkowe parametry.
  • item filter - zobacz filtr pozycji;
  • time period - zobacz okres czasu;
  • operator (musi być ujęty w podwójny cudzysłów). Obsługiwane operatory:
    eq - równe
    ne - nierówne
    gt - większe niż
    ge - większe lub równe
    lt - mniejsze niż
    le - mniejsze lub równe
    like - pasuje, jeśli zawiera wzorzec (z uwzględnieniem wielkości liter)
    bitand - bitowe AND
    regexp - dopasowanie z uwzględnieniem wielkości liter do wyrażenia regularnego podanego w pattern
    iregexp - dopasowanie bez uwzględniania wielkości liter do wyrażenia regularnego podanego w pattern
  • pattern - wymagany wzorzec (argumenty tekstowe muszą być ujęte w podwójny cudzysłów); obsługiwany, jeśli operator został określony w trzecim parametrze.

Uwagi:

  • Użycie count() z funkcją foreach powiązaną z historią (max_foreach, avg_foreach itp.) może mieć wpływ na wydajność, natomiast użycie exists_foreach(), które działa wyłącznie na danych konfiguracyjnych, nie będzie miało takiego efektu.
  • Opcjonalnych parametrów operator lub pattern nie można pozostawić pustych po przecinku, można je jedynie całkowicie pominąć.
  • Jeśli jako trzeci parametr użyto bitand, czwarty parametr pattern można podać jako dwie liczby rozdzielone znakiem '/': number_to_compare_with/mask. count() oblicza „bitowe AND” z wartości i mask oraz porównuje wynik z number_to_compare_with. Jeśli wynik „bitowego AND” jest równy number_to_compare_with, wartość jest zliczana.
    Jeśli number_to_compare_with i mask są równe, wystarczy podać tylko mask (bez '/').
  • Jeśli jako trzeci parametr użyto regexp lub iregexp, czwarty parametr pattern może być zwykłym lub globalnym (zaczynającym się od '@') wyrażeniem regularnym. W przypadku globalnych wyrażeń regularnych rozróżnianie wielkości liter jest dziedziczone z ustawień globalnego wyrażenia regularnego. Na potrzeby dopasowania regexp wartości zmiennoprzecinkowe będą zawsze reprezentowane z 4 cyframi dziesiętnymi po '.'. Należy również pamiętać, że w przypadku dużych liczb różnica między reprezentacją dziesiętną (przechowywaną w bazie danych) a binarną (używaną przez serwer Zabbix) może wpływać na 4. cyfrę dziesiętną.

Przykłady:

count(max_foreach(/*/net.if.in[*],1h)) #calculate the number of net.if.in items that received data in the last hour until now
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculate the number of file systems with over 95% of disk space used
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)

Oblicza φ-kwantyl na podstawie kubełków histogramu.
Obsługiwana funkcja foreach: bucket_rate_foreach.

Parametry:

  • quantile — 0 ≤ φ ≤ 1;
  • bucketN, valueN — ręcznie wprowadzone pary (>=2) parametrów lub odpowiedź bucket_rate_foreach.

Uwagi:

  • Obsługiwane tylko w pozycjach obliczanych;
  • Funkcjonalnie odpowiada funkcji 'histogram_quantile' w PromQL;
  • Zwraca -1, jeśli wartości ostatniego kubełka 'Infinity' ("+inf") są równe 0.

Przykłady:

histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
item_count(item filter)

Liczba istniejących pozycji w konfiguracji, które odpowiadają kryteriom filtra.
Obsługiwany typ wartości: Integer.

Parametr:

  • item filter - kryteria wyboru pozycji, umożliwia odwoływanie się według grupy hostów, hosta, klucza pozycji oraz tagów. Obsługiwane są symbole wieloznaczne. Więcej informacji można znaleźć w item filter.

Uwagi:

  • Obsługiwane tylko w pozycjach obliczanych;
  • Działa jako alias funkcji count(exists_foreach(item_filter)).

Przykłady:

item_count(/*/agent.ping?[group="Host group 1"]) #oblicza liczbę hostów z pozycją agent.ping w "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)

„Spiczastość” rozkładu prawdopodobieństwa wartości zebranych w zdefiniowanym okresie obliczania. Zobacz także: Kurtoza.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

kurtosis(/host/system.cpu.util[,user],5m)>5 #wyzwalacz przy gwałtownych skokach wykorzystania CPU w ciągu 5 minut
mad(/host/key,(sec|#num)<:time shift>)

Mediana odchyleń bezwzględnych w zebranych wartościach w zdefiniowanym okresie obliczeniowym. Zobacz także: Median absolute deviation.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #wyzwalacz, jeśli ostatnia wartość wykorzystania CPU jest statystycznie istotna
max(/host/key,(sec|#num)<:time shift>)

Najwyższa wartość pozycji w zdefiniowanym okresie obliczania.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

max(/host/key,1h) - min(/host/key,1h) #oblicza różnicę między wartościami maksymalną i minimalną w ciągu ostatniej godziny do teraz (delta wartości)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #zwraca najwyższe użycie dysku na wszystkich serwerach Linux
min(/host/key,(sek|#num)<:przesunięcie czasu>)

Najniższa wartość pozycji w zdefiniowanym okresie obliczania.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

max(/host/key,1h) - min(/host/key,1h) #oblicza różnicę między wartościami maksymalną i minimalną w ciągu ostatniej godziny do chwili obecnej (deltę wartości)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #zwraca minimalny stan operacyjny dowolnego interfejsu we wszystkich serwerach Linux
skewness(/host/key,(sec|#num)<:time shift>)

Asymetria rozkładu prawdopodobieństwa zebranych wartości w zdefiniowanym okresie oceny. Zobacz także: Skewness.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
stddevpop(/host/key,(sec|#num)<:time shift>)

Odchylenie standardowe populacji w zebranych wartościach w zdefiniowanym okresie obliczania. Zobacz także: Odchylenie standardowe.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

stddevpop(/host/system.cpu.util[,user],10m)>7 #wyzwalacz, jeśli użycie CPU silnie się waha (odchylenie standardowe populacji jest większe niż 7 w ciągu 10 minut)
stddevsamp(/host/key,(sec|#num)<:time shift>)

Odchylenie standardowe z próby dla zebranych wartości w zdefiniowanym okresie obliczeniowym. Zobacz także: Odchylenie standardowe.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Do działania tej funkcji wymagane są co najmniej dwie wartości danych.

Przykłady:

stddevsamp(/host/system.cpu.util[,user],10m)>7 #wyzwalacz, jeśli użycie CPU silnie się waha (odchylenie standardowe z próby jest większe niż 7 w ciągu 10 minut)
sum(/host/key,(sec|#num)<:time shift>)

Suma zebranych wartości w zdefiniowanym okresie obliczania.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: avg_foreach, count_foreach, exists_foreach, last_foreach, max_foreach, min_foreach, sum_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #suma najnowszych wartości przychodzącego ruchu sieciowego na wszystkich serwerach Linux
sumofsquares(/host/key,(sec|#num)<:time shift>)

Suma kwadratów zebranych wartości w zdefiniowanym okresie obliczania.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

sumofsquares(/host/calculated.net.if.rate,1m) #suma kwadratów dla szybkości ruchu sieciowego (przychodzącego i wychodzącego)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #suma kwadratów najnowszych wartości przychodzącego ruchu sieciowego we wszystkich serwerach Linux
varpop(/host/key,(sec|#num)<:time shift>)

Wariancja populacji zebranych wartości w zdefiniowanym okresie obliczania. Zobacz także: Wariancja.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Przykłady:

varpop(/host/system.cpu.util[,user],10m)>50 #wyzwalacz, jeśli użycie CPU silnie się waha (wariancja jest powyżej 50 w ciągu 10 minut)
varsamp(/host/key,(sec|#num)<:time shift>)

Wariancja próbki zebranych wartości w zdefiniowanym okresie obliczania. Zobacz także: Wariancja.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.

Parametry: zobacz wspólne parametry.

Do działania tej funkcji wymagane są co najmniej dwie wartości danych.

Przykłady:

varsamp(/host/system.cpu.util[,user],10m)>50 #wyzwalacz, jeśli użycie CPU silnie się waha (wariancja próbki jest powyżej 50 w ciągu 10 minut)

Zobacz wszystkie obsługiwane funkcje.