1 Funkcje agregujące
O ile nie zaznaczono inaczej, wszystkie funkcje wymienione tutaj są obsługiwane w:
Funkcje agregujące mogą działać z:
- historią pozycji, na przykład
min(/host/key,1h) - funkcjami foreach jako
jedynym parametrem, na przykład
min(last_foreach(/*/key))(tylko w pozycjach obliczanych; nie można ich używać w wyzwalaczach)
Funkcje są wymienione bez dodatkowych informacji. Kliknij nazwę funkcji, 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 pasują do kryteriów filtra. |
| kurtosis | "Szczytowość" rozkładu prawdopodobieństwa w zebranych wartościach w zdefiniowanym okresie oceny. |
| mad | Mediana odchyleń bezwzględnych w zebranych wartościach 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 w zebranych wartościach w zdefiniowanym okresie oceny. |
| stddevpop | Odchylenie standardowe populacji w zebranych wartościach w zdefiniowanym okresie oceny. |
| stddevsamp | Odchylenie standardowe próby w zebranych wartościach 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. |
Parametry wspólne
/host/keyjest wspólnym obowiązkowym pierwszym parametrem funkcji odwołujących się do historii pozycji hosta(sec|#num)<:time shift>jest wspólnym drugim parametrem funkcji odwołujących się do historii pozycji hosta, gdzie:- sec - maksymalny okres oceny w sekundach (można używać przyrostków czasu), lub
- #num - maksymalny zakres oceny w ostatnio zebranych wartościach (jeśli poprzedzony znakiem hash)
- time shift (opcjonalnie) umożliwia przesunięcie punktu oceny wstecz w czasie. Zobacz więcej szczegółów na temat określania time shift.
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/keyoraz(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 oceny.
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 parametry wspólne.
Przesunięcie czasu jest przydatne, gdy zachodzi potrzeba porównania bieżącej średniej wartości ze średnią wartością sprzed pewnego czasu.
Przykłady:
avg(/host/key,1h) #oblicz średnią wartość z ostatniej godziny do teraz
avg(/host/key,#5) #oblicz średnią wartość z pięciu najnowszych wartości
avg(/host/key,1h:now-1d) #oblicz średnią wartość dla godziny od 25 godzin temu do 24 godzin temu względem teraz
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #oblicz średnie obciążenie procesora dla wszystkich serwerów MySQL
avg(/host/proc.num,5m)>300 #wyzwalacz, jeśli średnia liczba procesów w ostatnich 5 minutach była większa niż 300
bucket_percentile(item filter,time period,percentage)
Oblicza percentyl na podstawie kubełków histogramu.
Parametry:
- item filter - zobacz item filter;
- time period - zobacz time period;
- percentage - procent (0-100).
Komentarze:
- 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) #oblicz 95. percentyl czasu odpowiedzi w ciągu 5 minut
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #oblicz 99. percentyl opóźnienia API
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 należy policzyć liczbę zwróconych wartości. Szczegóły znajdują się w opisie funkcji foreach. Należy pamiętać, że count_foreach i bucket_rate_foreach obsługują dodatkowe parametry.
- item filter - zobacz składnię filtra pozycji;
- time period - zobacz okres czasu;
- operator (musi być ujęty w podwójne cudzysłowy). Obsługiwane
operators:
eq - równe
ne - nierówne
gt - większe
ge - większe lub równe
lt - mniejsze
le - mniejsze lub równe
like - dopasowuje, jeśli zawiera wzorzec (uwzględnia wielkość liter)
bitand - bitowe AND
regexp - dopasowanie wyrażenia regularnego podanego wpatternz uwzględnieniem wielkości liter
iregexp - dopasowanie wyrażenia regularnego podanego wpatternbez uwzględniania wielkości liter - pattern - wymagany wzorzec (argumenty typu string muszą być ujęte w podwójne cudzysłowy); obsługiwany, jeśli w trzecim parametrze określono operator.
Uwagi:
- Użycie count() z funkcją foreach opartą na historii (max_foreach, avg_foreach itp.) może mieć wpływ na wydajność, natomiast użycie exists_foreach(), która 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ąć.
- Przy bitand jako trzecim parametrze czwarty parametr
patternmoże być określony jako dwie liczby rozdzielone znakiem '/': number_to_compare_with/mask. count() oblicza operację "bitwise AND" dla wartości i mask oraz porównuje wynik z number_to_compare_with. Jeśli wynik "bitwise AND" jest równy number_to_compare_with, wartość jest liczona.
Jeśli number_to_compare_with i mask są równe, wystarczy podać tylko mask (bez '/'). - Przy regexp lub iregexp jako trzecim parametrze czwarty parametr
patternmoże być zwykłym lub globalnym wyrażeniem regularnym (zaczynającym się od '@'). W przypadku globalnych wyrażeń regularnych uwzględnianie 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 po '.'. Należy też 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ę po przecinku.
Przykłady:
count(max_foreach(/*/net.if.in[*],1h)) #oblicza liczbę pozycji net.if.in, które otrzymały dane w ostatniej godzinie do chwili obecnej
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #oblicza liczbę systemów plików, w których wykorzystano ponad 95% miejsca na dysku
histogram_quantile(quantile,bucket1,value1,bucket2,value2,...)
Oblicza kwantyl φ na podstawie kubełków histogramu.
Obsługiwane foreach function: bucket_rate_foreach.
Parametry:
- quantile - 0 ≤ φ ≤ 1;
- bucketN, valueN - ręcznie wprowadzone pary (>=2) parametrów lub odpowiedź funkcji bucket_rate_foreach.
Uwagi:
- Obsługiwane tylko w pozycjach obliczanych;
- Funkcjonalnie odpowiada 'histogram_quantile' z 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 spełniają kryteria filtra.
Obsługiwany typ wartości: Integer.
Parametr:
- item filter - kryteria wyboru pozycji, umożliwiające odwołanie się przez grupę hostów, host, klucz pozycji i tagi. Obsługiwane są symbole wieloznaczne. Więcej informacji można znaleźć w sekcji 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"]) #oblicz liczbę hostów z pozycją agent.ping w "Host group 1"
kurtosis(/host/key,(sec|#num)<:time shift>)
"Ogoniastość" rozkładu prawdopodobieństwa w zebranych wartościach w określonym okresie oceny. Zobacz także: Kurtosis.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.
Parametry: zobacz parametry wspólne.
Przykłady:
kurtosis(/host/system.cpu.util[,user],5m)>5 #trigger on sharp spikes of CPU utilization over 5 minutes
mad(/host/key,(sec|#num)<:time shift>)
Mediana odchyleń bezwzględnych w zebranych wartościach w zdefiniowanym okresie oceny. Zobacz także: Mediana odchyleń bezwzględnych.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.
Parametry: zobacz parametry wspólne.
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ść użycia CPU jest statystycznie istotna
max(/host/key,(sec|#num)<:time shift>)
Najwyższa wartość pozycji w zdefiniowanym okresie oceny.
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 maksymalną i minimalną wartością z ostatniej godziny do teraz (delta wartości)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #zwraca najwyższe użycie dysku spośród wszystkich serwerów Linux
min(/host/key,(sec|#num)<:time shift>)
Najniższa wartość pozycji w zdefiniowanym okresie oceny.
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 maksymalną i minimalną wartością w ciągu ostatniej godziny do chwili obecnej (delta wartości)
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #zwraca minimalny stan operacyjny dla dowolnego interfejsu we wszystkich serwerach Linux
skewness(/host/key,(sec|#num)<:przesunięcie czasowe>)
Asymetria rozkładu prawdopodobieństwa w zebranych wartościach w określonym okresie oceny. Zobacz także: Skewness.
Obsługiwane typy wartości: Float, Integer.
Obsługiwana funkcja foreach: last_foreach.
Parametry: zobacz parametry wspólne.
Przykłady:
skewness(/host/vm.memory.size[used],5m)<-20 #wyzwalacz na nagłe ujemne spadki wskazujące na awarie/ponowne uruchomienia
stddevpop(/host/key,(sec|#num)<:przesunięcie czasu>)
Odchylenie standardowe populacji w zebranych wartościach w zdefiniowanym okresie oceny. 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 mocno się waha (odchylenie standardowe populacji jest większe niż 7 w ciągu 10 minut)
stddevsamp(/host/key,(sec|#num)<:time shift>)
Próbkowe odchylenie standardowe w zebranych wartościach w zdefiniowanym okresie oceny. Zobacz także: Odchylenie standardowe.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: last_foreach.
Parametry: zobacz parametry wspólne.
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 (próbkowe odchylenie standardowe jest większe niż 7 w ciągu 10 minut)
sum(/host/key,(sec|#num)<:time shift>)
Suma zebranych wartości w zdefiniowanym okresie oceny.
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"])) #oblicza całkowity ruch przychodzący w sieci dla wszystkich serwerów Linux
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #oblicza całkowitą przestrzeń dyskową dla wszystkich serwerów MySQL
sum(last_foreach(/*/net.dns[*,*,*])) #oblicza całkowitą liczbę pomyślnych sprawdzeń DNS
sumofsquares(/host/key,(sec|#num)<:time shift>)
Suma kwadratów w zebranych wartościach w zdefiniowanym okresie oceny.
Obsługiwane typy wartości: Float, Integer.
Obsługiwane funkcje foreach: last_foreach.
Parametry: zobacz parametry wspólne.
Przykłady:
sumofsquares(/host/calculated.net.if.rate,1m) #suma kwadratów dla szybkości ruchu sieciowego (przychodzącego względem wychodzącego)
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #suma kwadratów dla najnowszych wartości ruchu sieciowego przychodzącego we wszystkich hostach z systemem Linux
varpop(/host/key,(sec|#num)<:przesunięcie czasu>)
Wariancja populacji zebranych wartości w zdefiniowanym okresie oceny. Zobacz także: Variance.
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 mocno się waha (wariancja jest większa niż 50 w ciągu 10 minut)
varsamp(/host/key,(sec|#num)<:time shift>)
Wariancja próbki zebranych wartości w zdefiniowanym okresie oceny. 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 mocno się waha (wariancja próbki jest większa niż 50 w ciągu 10 minut)
Zobacz wszystkie obsługiwane funkcje.