7 Pozycje obliczane
Przegląd
Pozycja obliczana umożliwia utworzenie obliczenia na podstawie wartości niektórych istniejących pozycji. Na przykład możesz chcieć obliczyć średnią godzinową wartości jakiejś pozycji albo obliczyć wartość łączną dla grupy pozycji. Właśnie do tego służy pozycja obliczana.
Obliczenia mogą wykorzystywać zarówno:
- pojedyncze wartości poszczególnych pozycji
- złożony filtr do wyboru wielu pozycji do agregacji (zobacz obliczenia agregujące po szczegóły)
Pozycje obliczane są sposobem tworzenia 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 dla każdej innej pozycji; zapisywane są zarówno wartości historii, jak i trendów, a także mogą być generowane wykresy.
Jeśli wynik obliczenia jest wartością zmiennoprzecinkową, zostanie obcięty do liczby całkowitej, jeśli typ informacji pozycji obliczanej to Numeric (unsigned).
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 jeden tydzień wstecz, aby odpytać bazę danych o wartości historyczne.
Pozycje obliczane współdzielą swoją składnię z wyrażeniami wyzwalaczy. Jeśli znasz wyrażenia wyzwalaczy, możesz myśleć o pozycjach obliczanych jak o funkcjach analizujących pewne wartości, ale bez porównania z progiem.
W pozycjach obliczanych dozwolone jest porównywanie ze stringami. 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 Calculated.
Konfigurowalne pola
Klucz jest unikalnym identyfikatorem pozycji (w obrębie hosta). Możesz utworzyć dowolną nazwę klucza, używając obsługiwanych symboli.
Definicję obliczenia należy wprowadzić w polu Formula. Nie ma powiązania między formułą a kluczem. Parametry klucza 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:
| Element | Opis |
|---|---|
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 |
Klucz pozycji używanej do obliczeń. Pozycje zwracające wartości z binarnym lub JSON typem 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 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, klucza pozycji, parametru klucza pozycji lub operatora.
Bardziej złożona formuła może wykorzystywać kombinację funkcji, operatorów i nawiasów. Możesz używać wszystkich funkcji i operatorów obsługiwanych w wyrażeniach wyzwalaczy. Logika i priorytet operatorów są dokładnie takie same.
W przeciwieństwie do wyrażeń wyzwalaczy, Zabbix przetwarza pozycje obliczane zgodnie z interwałem aktualizacji pozycji, a nie po otrzymaniu nowej wartości.
Wszystkie pozycje, do których odwołują się funkcje historii w formule pozycji obliczanej, muszą istnieć i zbierać dane. Ponadto, jeśli zmienisz klucz pozycji, do której istnieje odwołanie, musisz ręcznie zaktualizować wszystkie formuły używające tego klucza.
Pozycja obliczana może stać się nieobsługiwana w kilku przypadkach:
- pozycje, do których istnieje odwołanie
- nie zostały znalezione
- są wyłączone
- należą do wyłączonego hosta
- są nieobsługiwane (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 oraz obliczy wartość procentową zgodnie z podaną formułą.
Przykład 2
Obliczanie 10-minutowej średniej liczby wartości przetwarzanych przez Zabbix.
Użycie funkcji avg:
avg(/Zabbix Server/zabbix[wcache,values],10m)
Należy pamiętać, że intensywne używanie pozycji obliczanych z długimi okresami czasu może wpływać 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