4 Funkcje historii

Wszystkie funkcje wymienione tutaj są obsługiwane w:

Kilka ogólnych uwag na temat parametrów funkcji:

  • Parametry funkcji są oddzielone przecinkiem
  • Opcjonalne parametry funkcji (lub części parametrów) są oznaczone jako < >
  • Specyficzne dla funkcji parametry są opisane przy każdej funkcji
  • Parametry /host/key oraz (sec|#num)<:time shift> nigdy nie powinny być umieszczane w cudzysłowiu
Wspólne parametry
  • /host/key to wspólny obowiązkowy pierwszy parametr dla funkcji, odnoszących się do historii pozycji hosta
  • (sec|#num)<:time shift> to wspólny drugi parametr dla funkcji, odnoszących się do historii pozycji hosta, gdzie:

Funkcje historyczne

FUNKCJA
Opis Specyficzne dla funkcji parametry Komentarze
change (/host/key)
Różnica między poprzednią a ostatnią wartością. Obsługiwane typy wartości: float, int, str, text, log

Dla ciągów znaków zwraca:
0 - wartości są równe
1 - wartości różnią się

Przykład:
=> change(/host/key)>10

Różnica zostanie obliczona tak, jak widać na tych przykładowych wartościach ('poprzednia' i 'ostatnia' wartość = różnica):
'1' i '5' = +4
'3' i '1' = -2
'0' i '-2.5' = -2.5

Zobacz również: abs do porównań
changecount (/host/key,(sec|#num)<:time shift>,<mode>)
Liczba zmian między sąsiednimi wartościami w określonym okresie ewaluacji. Zobacz wspólne parametry.

mode (opcjonalny; musi być w podwójnym cudzysłowiu)

Obsługiwane tryby:
all - zlicz wszystkie zmiany (domyślnie)
dec - zlicz spadki
inc - zlicz wzrosty
Obsługiwane typy wartości: float, int, str, text, log

Dla typów wartości inne niż numeryczne, parametr mode jest ignorowany.

Przykłady:
=> changecount(/host/key, 1w) → liczba zmian wartości w ciągu ostatniego tygodnia do teraz
=> changecount(/host/key,#10,"inc") → liczba wzrostów wartości (względem wartości sąsiedniej) wśród ostatnich 10 wartości
=> changecount(/host/key,24h,"dec") → liczba spadków wartości (względem wartości sąsiedniej) w ciągu ostatnich 24 godzin do teraz
count (/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)
Ilość wartości w określonym okresie ewaluacji. Zobacz wspólne parametry.

operator (opcjonalny; musi być w podwójnym cudzysłowiu)

Obsługiwane wartości operator:
eq - równy (domyślnie dla integer, float)
ne - nie równy
gt - większy
ge - większy lub równy
lt - mniejszy
le - mniejszy lub równy
like (domyślnie dla string, text, log) - pasuje jeśli zawiera wzorzec (wrażliwe na wielkość liter)
bitand - bitowe AND
regexp - dopasowanie z uwzględnieniem wielkości liter wyrażenia regularnego podanego w pattern
iregexp - dopasowanie bez uwzględniania wielkości liter wyrażenia regularnego podanego w pattern

Zauważ, że:
eq (domyślny), ne, gt, ge, lt, le, band, regexp, iregexp są obsługiwane dla pozycji typu liczba całkowita bez znaku
eq (domyślny), ne, gt, ge, lt, le, regexp, iregexp są obsługiwane dla pozycji typu liczba zmiennoprzecinkowa
like (domyślny), eq, ne, regexp, iregexp są obsługiwane dla pozycji typu znak, tekst i log

pattern (opcjonalny) - wymagany wzorzec (argumenty typu ciąg znaków muszą być w podwójnym cudzysłowiu)
Obsługiwane typy wartości: float, integer, string, text, log

Pozycje zmiennoprzecinkowe posiadają precyzje 2.22e-16; jeśli baza danych nie została zaktualizowana precyzja wynosi 0,000001.

Podając bitand jako trzeci parametr, czwarty parametr pattern może być określony jako dwie liczby, oddzielone '/': number_to_compare_with/mask. count() oblicza "bitowe AND" wartości i maski i 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, należy podać tylko maskę (bez '/').

Podając regexp lub iregexp jako trzeci parametr, czwarty parametr pattern może być zwykłym lub globalnym (zaczynającym się od '@') wyrażeniem regularnym. W przypadku globalnych wyrażeń regularnych wrażliwość na wielkość liter dziedziczona jest z ustawień globalnego wyrażenia regularnego. W celu dopasowania za pomocą wyrażenia regularnego wartości zmiennoprzecinkowych zawsze zostaną przedstawione z 4 cyframi dziesiętnymi po '.'. Należy także zauważyć, że dla dużych liczb różnice w reprezentacji dziesiętnej (przechowywanej w bazie danych) i binarnej (używanej przez serwer Zabbix) mogą wpłynąć na 4. cyfrę dziesiętną.

Przykłady:
=> count(/host/key,10m) → liczba wartości z ostatnich 10 minut do teraz
=> count(/host/key,10m,"like","error") → liczba wartości z ostatnich 10 minut do teraz, które zawierają 'error'
=> count(/host/key,10m,,12) → liczba wartości z ostatnich 10 minut do teraz, które są równe '12'
=> count(/host/key,10m,"gt",12) → liczba wartości z ostatnich 10 minut do teraz, które są większe niż '12'
=> count(/host/key,#10,"gt",12) → liczba wartości w ostatnich 10 wartościach do teraz, które są większe niż '12'
=> count(/host/key,10m:now-1d,"gt",12) → liczba wartości między 24 godzinami a 10 minutami i 24 godzinami temu od teraz, które były większe niż '12'
=> count(/host/key,10m,"bitand","6/7") → liczba wartości z ostatnich 10 minut do teraz, mających '110' (w kodzie binarnym) w 3 najmniej znaczących bitach.
=> count(/host/key,10m:now-1d) → liczba wartości między 24 godzinami a 10 minutami i 24 godzinami temu od teraz
countunique (/host/key,(sec|#num)<:time shift>,<operator>,<pattern>)
Liczba unikalnych wartości w określonym okresie ewaluacji. Zobacz wspólne parametry.

operator (opcjonalny; musi być w podwójnym cudzysłowiu)

Obsługiwane wartości operator:
eq - równy (domyślnie dla integer, float)
ne - nie równy
gt - większy
ge - większy lub równy
lt - mniejszy
le - mniejszy lub równy
like (domyślnie dla string, text, log) - pasuje jeśli zawiera wzorzec (wrażliwe na wielkość liter)
bitand - bitowe AND
regexp - dopasowanie z uwzględnieniem wielkości liter wyrażenia regularnego podanego w pattern
iregexp - dopasowanie bez uwzględniania wielkości liter wyrażenia regularnego podanego w pattern

Zauważ, że:
eq (domyślny), ne, gt, ge, lt, le, band, regexp, iregexp są obsługiwane dla pozycji typu liczba całkowita bez znaku
eq (domyślny), ne, gt, ge, lt, le, regexp, iregexp są obsługiwane dla pozycji typu liczba zmiennoprzecinkowa
like (domyślny), eq, ne, regexp, iregexp są obsługiwane dla pozycji typu znak, tekst i log

pattern (opcjonalny) - wymagany wzorzec (argumenty typu ciąg znaków muszą być w podwójnym cudzysłowiu)
Obsługiwane typy wartości: float, integer, string, text, log

Pozycje zmiennoprzecinkowe posiadają precyzje 2.22e-16; jeśli baza danych nie została zaktualizowana precyzja wynosi 0,000001.

Podając bitand jako trzeci parametr, czwarty parametr pattern może być określony jako dwie liczby, oddzielone '/': number_to_compare_with/mask. count() oblicza "bitowe AND" wartości i maski i 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, należy podać tylko maskę (bez '/').

Podając regexp lub iregexp jako trzeci parametr, czwarty parametr pattern może być zwykłym lub globalnym (zaczynającym się od '@') wyrażeniem regularnym. W przypadku globalnych wyrażeń regularnych wrażliwość na wielkość liter dziedziczona jest z ustawień globalnego wyrażenia regularnego. W celu dopasowania za pomocą wyrażenia regularnego wartości zmiennoprzecinkowych zawsze zostaną przedstawione z 4 cyframi dziesiętnymi po '.'. Należy także zauważyć, że dla dużych liczb różnice w reprezentacji dziesiętnej (przechowywanej w bazie danych) i binarnej (używanej przez serwer Zabbix) mogą wpłynąć na 4. cyfrę dziesiętną.

Przykłady:
=> countunique(/host/key,10m) → liczba unikalnych wartości dla ostatnich 10 minut do teraz
=> countunique(/host/key,10m,"like","error") → liczba unikalnych wartości dla ostatnich 10 minut do teraz, które zawierają 'error'
=> countunique(/host/key,10m,"gt",12) → liczba unikalnych wartości dla ostatnich 10 minut do teraz, które są większe od '12'
=> countunique(/host/key,#10,"gt",12) → liczba unikalnych wartości w ostatnich 10 wartościach do teraz, które są większe od '12'
=> countunique(/host/key,10m:now-1d,"gt",12) → liczba unikalnych wartości między 24 godzinami i 10 minutami a 24 godzinami temu od teraz, które były większe od '12'
=> countunique(/host/key,10m,"bitand","6/7") → liczba unikalnych wartości dla ostatnich 10 minut do teraz, które mają '110' (w kodzie binarnym) w 3 najmniej znaczących bitach.
=> countunique(/host/key,10m:now-1d) → liczba unikalnych wartości między 24 godzinami i 10 minutami a 24 godzinami temu od teraz
find (/host/key,<(sec|#num)<:time shift>>,<operator>,<pattern>)
Znajdź dopasowanie wartości. Zobacz wspólne parametry.

sec lub #num (opcjonalne) - domyślnie do ostatniej wartości, jeśli nie jest określone

operator (opcjonalny; musi być w podwójnym cudzysłowiu)

Obsługiwane wartości operator:
eq - równy (domyślnie dla integer, float)
ne - nie równy
gt - większy
ge - większy lub równy
lt - mniejszy
le - mniejszy lub równy
like (domyślnie dla string, text, log) - pasuje jeśli zawiera wzorzec (wrażliwe na wielkość liter)
bitand - bitowe AND
regexp - dopasowanie z uwzględnieniem wielkości liter wyrażenia regularnego podanego w pattern
iregexp - dopasowanie bez uwzględniania wielkości liter wyrażenia regularnego podanego w pattern

Zauważ, że:
eq (domyślny), ne, gt, ge, lt, le, band, regexp, iregexp są obsługiwane dla pozycji typu liczba całkowita bez znaku
eq (domyślny), ne, gt, ge, lt, le, regexp, iregexp są obsługiwane dla pozycji typu liczba zmiennoprzecinkowa
like (domyślny), eq, ne, regexp, iregexp są obsługiwane dla pozycji typu znak, tekst i log

pattern (opcjonalny) - wymagany wzorzec (argumenty typu ciąg znaków muszą być w podwójnym cudzysłowiu); Wyrażenie regularne zgodne z językiem Perl (PCRE), jeśli operator to regexp, iregexp.
Obsługiwane typy wartości: float, integer, string, text, log

Zwraca:
1 - znaleziono
0 - w przeciwnym razie

Jeśli przetwarzanych jest więcej niż jedna wartość, zwracane jest '1', jeśli istnieje co najmniej jedna pasująca wartość.

W przypadku użycia regexp lub iregexp jako trzeciego parametru, czwarty parametr pattern może być zwykłym lub globalnym (rozpoczynającym się od '@') wyrażeniem regularnym. W przypadku globalnych wyrażeń regularnych wrażliwość na wielkość liter jest dziedziczona z ustawień globalnego wyrażenia regularnego.

Przykład:
=> find(/host/key,10m,"like","error") → znajdź wartość zawierającą 'error' w ciągu ostatnich 10 minut do teraz
first (/host/key,sec<:time shift>)
Pierwsza (najstarsza) wartość w określonym okresie ewaluacji. Zobacz wspólne parametry. Obsługiwane typy wartości: float, int, str, text, log

Przykład:
=> first(/host/key,1h) → pobierz najstarszą wartość w ciągu ostatniej godziny do teraz

Zobacz również last().
fuzzytime (/host/key,sec)
Sprawdza, o ile pasywny agent różni się od czasu serwera/proxy Zabbix. Zobacz wspólne parametry. Obsługiwane typy wartości: float, int

Zwraca:
1 - różnica między wartością pozycji pasywnej (jako znacznik czasu) a znacznikiem czasu serwera/proxy Zabbix (czas zbierania wartości) jest mniejsza lub równa T sekund
0 - w przeciwnym razie

Zazwyczaj używane z pozycją 'system.localtime', aby sprawdzić, czy czas lokalny jest zsynchronizowany z czasem lokalnym serwera Zabbix. Uwaga 'system.localtime' musi być skonfigurowany jako sprawdzenie pasywne.
Można go również użyć z kluczem vfs.file.time[/path/file,modify], aby sprawdzić, czy plik nie został zaktualizowany przez długi czas.

Przykład:
=> fuzzytime(/host/key,60s)=0 → wykrycie problemu, jeśli różnica czasu przekracza 60 sekund

Nie zaleca się stosowania tej funkcji w złożonych wyrażeniach wyzwalaczy (z uwzględnieniem wielu elementów), ponieważ może to spowodować nieoczekiwane wyniki (różnica czasu zostanie zmierzona za pomocą najnowszej metryki), np. w fuzzytime(/Host/system.localtime,60s)=0 or last(/Host/trap)<>0
last (/host/key,<#num<:time shift>>)
Najnowsza wartość. Zobacz wspólne parametry.

#num (opcjonalne) - N-ta najnowsza wartość
Obsługiwane typy wartości: float, int, str, text, log

Należy zauważyć, że okres czasu z znakiem hash (#N) działa tutaj inaczej niż w przypadku wielu innych funkcji.
Na przykład:
last() zawsze jest równa last(#1)
last(#3) - trzecia najnowsza wartość (nie trzy najnowsze wartości)

Zabbix nie gwarantuje dokładnego porządku wartości, jeśli w historii istnieje więcej niż dwie wartości w ciągu jednej sekundy.

Przykład:
=> last(/host/key) → pobierz ostatnią wartość
=> last(/host/key,#2) → pobierz poprzednią wartość
=> last(/host/key,#1) <> last(/host/key,#2) → ostatnia i poprzednia wartość się różnią

Zobacz również first().
logeventid (/host/key,<#num<:time shift>>,<pattern>)
Sprawdzenie, czy ID zdarzenia ostatniego wpisu w logu odpowiada wyrażeniu regularnemu. Zobacz wspólne parametry.

#num (opcjonalne) - N-ta najnowsza wartość

pattern (opcjonalne) - wyrażenie regularne opisujące wymagany wzorzec, styl wyrażenia regularnego zgodne z językiem Perl (PCRE) (argumenty typu ciąg znaków muszą być w cudzysłowach).
Obsługiwane typy wartości: log

Zwraca:
0 - nie pasuje
1 - pasuje
logseverity (/host/key,<#num<:time shift>>)
Poziom zdarzenia logu ostatniego wpisu. Zobacz wspólne parametry.

#num (opcjonalne) - N-ta najnowsza wartość
Obsługiwane typy wartości: log

Zwraca:
0 - domyślny poziom zdarzenia
N - poziom zdarzenia (liczba całkowita, przydatne dla dzienników zdarzeń systemu Windows: 1 - Informacja, 2 - Ostrzeżenie, 4 - Błąd, 7 - Audyt niepowodzeń, 8 - Audyt powodzeń, 9 - Krytyczny, 10 - Szczegółowy).
Zabbix pobiera poziom zdarzenia logu z pola Information dziennika zdarzeń systemu Windows.
logsource (/host/key,<#num<:time shift>>,<pattern>)
Sprawdzanie, czy źródło logu ostatniego wpisu pasuje do wyrażenia regularnego. Zobacz wspólne parametry.

#num (opcjonalne) - N-ta najnowsza wartość

pattern (opcjonalne) - wyrażenie regularne opisujące wymagany wzorzec, styl wyrażenia regularnego zgodne z językiem Perl (PCRE) (argumenty typu ciąg znaków muszą być w cudzysłowach).
Obsługiwane typy wartości: log

Zwraca:
0 - nie pasuje
1 - pasuje

Zazwyczaj używane dla dzienników zdarzeń systemu Windows. Na przykład, logsource("VMware Server").
monodec (/host/key,(sec|#num)<:time shift>,<mode>)
Sprawdź, czy wystąpił monotoniczny spadek wartości. Zobacz wspólne parametry.

mode (musi być w podwójnym cudzysłowiu) - weak (każda wartość jest mniejsza lub równa poprzedniej; domyślnie) lub strict (każda wartość zmniejszyła się)
Obsługiwane typy wartości: int

Zwraca 1, jeśli wszystkie elementy w okresie czasu ciągle maleją, w przeciwnym razie 0.

Przykład:
=> monodec(/Host1/system.swap.size[all,free],60s) + monodec(/Host2/system.swap.size[all,free],60s) + monodec(/Host3/system.swap.size[all,free],60s) - oblicza, ile hostów miało spadek w rozmiarze wolnej przestrzeni wymiany
monoinc (/host/key,(sec|#num)<:time shift>,<mode>)
Sprawdź, czy wystąpił monotoniczny wzrost wartości. Zobacz wspólne parametry.

mode (musi być w podwójnym cudzysłowiu) - weak (każda wartość jest większa lub równa poprzedniej; domyślnie) lub strict (każda wartość zwiększyła się)
Obsługiwane typy wartości: int

Zwraca 1, jeśli wszystkie elementy w okresie czasu ciągle rosną, w przeciwnym razie 0.

Przykład:
=> monoinc(/Host1/system.localtime,#3,"strict")=0 - sprawdź, czy lokalny czas systemu cały czas wzrastał
nodata (/host/key,sec,<mode>)
Sprawdź, czy nie otrzymano danych. Zobacz wspólne parametry.

Okres sec nie powinien być krótszy niż 30 sekund, ponieważ proces synchronizacji historii oblicza tę funkcję tylko co 30 sekund.

nodata(/host/key,0) jest niedozwolone.

mode - jeśli ustawiono na strict (podwójne cudzysłowy), ta funkcja będzie niewrażliwa na dostępność proxy (patrz komentarze po więcej szczegółów).
Obsługiwane są wszystkie typy wartości.

Zwraca:
1 - jeśli nie otrzymano danych w określonym czasie
0 - w przeciwnym razie

Od wersji Zabbix 5.0, wyzwalacze 'nodata' monitorowane przez proxy są domyślnie wrażliwe na dostępność proxy - jeśli proxy stanie się niedostępne, wyzwalacze 'nodata' nie zostaną natychmiast uruchomione po przywróceniu połączenia, ale pominięte zostaną dane dla opóźnionego okresu. Zauważ, że dla pasywnych proxy wstrzymanie jest aktywowane, jeśli połączenie zostanie przywrócone po więcej niż 15 sekundach i nie wcześniej niż 2 & ProxyUpdateFrequency sekund później. Dla aktywnych proxy wstrzymanie jest aktywowane, jeśli połączenie zostanie przywrócone po więcej niż 15 sekundach.

Aby wyłączyć wrażliwość na dostępność proxy, użyj trzeciego parametru, np.: nodata(/host/key,5m,"strict"); w tym przypadku funkcja będzie działać tak samo jak przed wersją 5.0.0 i uruchomi się zaraz po zakończeniu okresu ewaluacji (pięć minut) bez danych.

Zauważ, że ta funkcja wyświetli błąd, jeśli w okresie pierwszego parametru:
- nie ma danych i serwer Zabbix został ponownie uruchomiony
- nie ma danych i okres konserwacji został zakończony
- nie ma danych i pozycja został dodana lub ponownie włączona
Błędy są wyświetlane w kolumnie Info w konfiguracji wyzwalacza.

Ta funkcja może nie działać poprawnie, jeśli występują różnice czasu między serwerem Zabbix, proxy a agentem. Zobacz także: Wymóg synchronizacji czasu.
percentile (/host/key,(sec|#num)<:time shift>,percentage)
P-ta percentyla okresu, gdzie P (procent) jest określony przez trzeci parametr. Zobacz wspólne parametry.

percentage - liczba zmiennoprzecinkowa między 0 a 100 (włącznie) z maksymalnie 4 cyframi po przecinku
Obsługiwane typy wartości: float, int
rate (/host/key,sec<:time shift>)
Średnia stopa wzrostu na sekundę monotonnie rosnącego licznika w określonym okresie czasu. Zobacz wspólne parametry. Obsługiwane typy wartości: float, int

Funkcjonalnie odpowiada 'rate' z PromQL.

Przykład:
=> rate(/host/key,30s) → Jeśli monotoniczny wzrost przez 30 sekund wynosi 20, ta funkcja zwróci 0.67.