This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

7 Pozycje obliczone

7.1 Przegląd

Dzięki pozycjom obliczanym można tworzyć kalkulacje na podstawie innych pozycji.

Zatem, pozycje obliczane są sposobem na tworzenie wirtualnych źródeł danych. Wartości będą okresowo obliczane na podstawie wyrażeń arytmetycznych. Wszystkie kalkulacje są dokonywane przez serwer Zabbix - żadne czynności związane z pozycjami obliczanymi nie są wykonywane na agencie lub proxy Zabbix.

Dane wynikowe będą przechowywane w bazie danych tak samo jak dla innych pozycji - oznacza to zarówno przechowywanie wartości historii jak i trendów dla szybkiego generowania wykresów. Pozycji obliczanych można używać w wyrażeniach wyzwalaczy, odwołaniach do makr lub w innych elementach, tak samo jak innych typów pozycji.

Żeby użyć pozycji obliczanych, należy wybrać pozycję typu Obliczone.

7.2 Konfigurowalne pola

Klucz jest unikalnym identyfikatorem pozycji (dla hosta). Można utworzyć dowolną nazwę klucza zawierającą dozwolone znaki.

Definicję obliczeń należy umieścić w polu Formuła ('Wyrażenie' w 1.8.1 i 1.8.2). W zasadzie nie ma powiązania między formułą i kluczem. Parametry klucza nie są w żadnym przypadku używane w formule.

Poprawna składnia prostej formuły to:

funkcja(<klucz>|<nazwahosta:klucz>,<parametr1>,<parametr2>,...)

Gdzie:

ARGUMENT DEFINICJA
funkcja Jedna z funkcji obsługiwanych w wyrażeniach wyzwalaczy: last, min, max, avg, count, itd.
klucz Klucz innej pozycji, której danych chcemy użyć. Może być zdefiniowane jako klucz lub nazwahosta:klucz.
Uwaga: Zalecamy umieszczenie klucza w cudzysłowach ("..."), żeby uniknąć niewłaściwej interpretacji z powodu spacji lub przecinków w nazwie klucza.
Jeżeli jeszcze dodatkowo wewntrz klucza są parametry w cudzysłowach, przed tymi cudzysłowami należy użyć znaku ukośnika (\). Zobacz Przykład 5 poniżej.
parametr(y) Dowolne dodatkowe wymagane parametry.

Wszystkie pozycje, do których odwołuje się formuła pozycji kalkulowanej muszą istnieć i zbierać dane. Zatem, jeżeli zmienimy klucz pozycji wskazywanej w pozycji, należy ręcznie zaktualizować każdą formułę używającą tego klucza.

Własne makra w formule zostaną rozwinięte, jeżeli były użyte w parametrach lub jako stałe. Własne makra NIE będą rozwinięte, gdy były użyte w funkcji, nazwie hosta, kluczu pozycji lub operatorze.

Bardziej złożona formuła może wykorzystywać kombinacje funkcji, operatorów i nawiasów. Można używać wszystkich funkcji i operatorów obsługiwanych w wyrażeniach wyzwalaczy. Należy zauważyć, że składnia różni się nieznacznie, jednakże logika i kolejność operatorów są dokładnie takie same.

Inaczej jak w wyrażeniach wyzwalaczy, Zabbix przetwarza pozycje obliczane zgodnie z interwałem aktualizacji pozycji, a nie podczas odbierania nowej wartości.

Pozycja obliczana może stać się niewspierana w kilku przypadkach:

  1. nie znaleziono wskazywanych pozycji
  2. brak danych do obliczenia funkcji
  3. dzielenie przez zero
  4. użyta niewłaściwa składnia

Obsługę pozycji obliczanych zainicjowano w wersji Zabbix 1.8.1

7.3 Przykłady użycia

Przykład 1

Obliczanie procenta wolnej przestrzeni dyskowej na '/'.

Użyjemy funkcji last:

100*last("vfs.fs.size[/,free]")/last("vfs.fs.size[/,total]")

Zabbix pobierze ostatnie wartości wolnej i ogólnej przestrzeni dyskowej i obliczy procent zgodnie z podaną formułą.

Przykład 2

Obliczanie 10-cio minutowej średniej liczby wartości przetwarzanych przez Zabbix.

Użyjemy funkcji avg:

avg("Zabbix Server:zabbix[wcache,values]",600)

Należy zauważyć, że częste używanie pozycji obliczanych z dłuższym okresem czasu może wpłynąć na wydajność serwera Zabbix.

Przykład 3

Obliczanie ogólnej przepustowości na eth0.

Suma dwóch funkcji:

last("net.if.in[eth0,bytes]")+last("net.if.out[eth0,bytes]")
Przykład 4

Obliczanie procenta 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]"))
Przykład 5

Prawidłowe użycie pozycji agregowanej w pozycji obliczanej.

Zauważcie, jak są zapisywane cudzysłowy wewnątrz klucza:

last("grpsum[\"video\",\"net.if.out[eth0,bytes]\",\"last\",\"0\"]") / last("grpsum[\"video\",\"nginx_stat.sh[active]\",\"last\",\"0\"]")