14 Obliczona pozycja

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ć łączną wartość dla grupy pozycji. 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 (szczegóły w sekcji obliczenia agregujące)

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 samo jak w przypadku każdej innej pozycji; zapisywane są zarówno dane historyczne, jak i trendów, a także można generować wykresy.

Jeśli wynik obliczenia jest wartością typu float, zostanie on 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 świeżych danych i w funkcji nie zdefiniowano okresu zapytania, Zabbix domyślnie sięgnie maksymalnie tydzień wstecz, aby pobrać z bazy danych wartości historyczne.

Pozycje obliczane współdzielą składnię z wyrażeniami wyzwalacza. Porównywanie ze stringami jest dozwolone w pozycjach obliczanych. Pozycje obliczane mogą być odwoływane przez makra lub inne encje tak samo jak każdy inny typ pozycji.

Aby używać pozycji obliczanych, wybierz typ pozycji Calculated.

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