14 Obliczona pozycja
Omówienie
Pozycja obliczana umożliwia utworzenie obliczenia na podstawie wartości niektórych istniejących pozycji. Można na przykład obliczyć średnią godzinową wartości pozycji lub całkowitą wartość dla grupy pozycji. Do tego właśnie służy pozycja obliczana.
Obliczenia mogą wykorzystywać zarówno:
- pojedyncze wartości poszczególnych pozycji
- złożony filtr do wyboru wielu pozycji na potrzeby agregacji (szczegółowe informacje można znaleźć w sekcji obliczenia agregujące)
Pozycje obliczane umożliwiają tworzenie wirtualnych źródeł danych. Wszystkie obliczenia są wykonywane wyłącznie przez serwer Zabbix. Wartości są okresowo obliczane na podstawie użytego wyrażenia arytmetycznego.
Wynikowe dane są przechowywane w bazie danych Zabbix tak jak w przypadku każdej innej pozycji; przechowywane są zarówno wartości historii, jak i trendy, a także można generować wykresy.
Jeśli wynik obliczenia jest wartością zmiennoprzecinkową, zostanie przycięty do liczby całkowitej, jeśli typ informacji pozycji obliczanej to Liczbowe (bez znaku).
Ponadto, jeśli w pamięci podręcznej nie ma aktualnych danych i w funkcji nie zdefiniowano okresu odpytywania, Zabbix domyślnie cofnie się maksymalnie o tydzień w przeszłość, aby odpytać bazę danych o wartości historyczne.
Pozycje obliczane używają tej samej składni co wyrażenia wyzwalaczy. W pozycjach obliczanych dozwolone jest porównywanie ciągów znaków. Do pozycji obliczanych można odwoływać się za pomocą makr lub innych encji, tak samo jak do każdego innego typu pozycji.
Aby używać pozycji obliczanych, wybierz typ pozycji Obliczana.
Konfigurowalne pola
key to unikalny identyfikator pozycji (dla hosta). Możesz utworzyć dowolną nazwę key, używając obsługiwanych symboli.
Definicję obliczeń należy wprowadzić w polu Formula. Nie ma żadnego powiązania między formułą a key. Parametry key nie są w żaden sposób używane w formule.
Składnia prostej formuły jest następująca:
function(/host/key,<parameter1>,<parameter2>,...)
gdzie:
| function | Jedna z obsługiwanych funkcji: last, min, max, avg, count itp. |
| host | Host pozycji używanej do obliczeń. Bieżący host można pominąć (tj. jak w function(//key,parameter,...)). |
| key | Key pozycji używanej do obliczeń. Pozycje zwracające wartości binarnego typu danych nie są obsługiwane. |
| parameter(s) | Parametry funkcji, jeśli są wymagane. Obsługiwane są sufiksy czasu oraz sufiksy rozmiaru pamięci. |
Makra użytkownika w formule zostaną rozwinięte, jeśli są używane do odwołania się do parametru funkcji, parametru filtra pozycji lub stałej. Makra użytkownika NIE zostaną rozwinięte, jeśli odwołują się do funkcji, nazwy hosta, key pozycji, parametru key pozycji lub operatora.
Bardziej złożona formuła może używać kombinacji funkcji, operatorów i nawiasów. Możesz używać wszystkich funkcji i operatorów obsługiwanych w wyrażeniach wyzwalaczy. Logika i kolejność operatorów są dokładnie takie same.
W przeciwieństwie do wyrażeń wyzwalaczy, Zabbix przetwarza obliczane pozycje zgodnie z interwałem aktualizacji pozycji, a nie po otrzymaniu nowej wartości.
Wszystkie pozycje, do których odwołują się funkcje historyczne w formule obliczanej pozycji, muszą istnieć i zbierać dane. Ponadto, jeśli zmienisz key odwoływanej pozycji, musisz ręcznie zaktualizować wszystkie formuły używające tego key.
Obliczana pozycja może stać się nieobsługiwana w kilku przypadkach:
- odwoływana pozycja(-e)
- nie została znaleziona
- jest wyłączona
- należy do wyłączonego hosta
- nie jest obsługiwana (z wyjątkiem funkcji nodata() oraz operatorów z nieznanymi wartościami)
- brak danych do obliczenia funkcji
- dzielenie przez zero
- użyto nieprawidłowej składni
Przykłady użycia
Przykład 1
Obliczanie procentu wolnego miejsca na dysku dla '/'.
Użycie funkcji last:
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
Zabbix pobierze najnowsze wartości wolnego i całkowitego miejsca na dysku i obliczy procent zgodnie z podanym wzorem.
Przykład 2
Obliczanie 10-minutowej średniej liczby wartości przetworzonych przez Zabbix.
Użycie funkcji avg:
avg(/Zabbix Server/zabbix[wcache,values],10m)
Należy pamiętać, że intensywne używanie obliczanych pozycji z długimi okresami może wpłynąć na wydajność serwera Zabbix.
Przykład 3
Obliczanie całkowitej przepustowości na eth0.
Suma dwóch funkcji:
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
Przykład 4
Obliczanie procentowego udziału ruchu przychodzącego.
Bardziej złożone wyrażenie:
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
Zobacz także: Przykłady obliczeń agregowanych