1 Przykłady wyzwalaczy

Ta strona zawiera zbiór przykładów wyzwalaczy.

Przykłady są posortowane według przypadków użycia:

Wykrywanie niedostępnego hosta
max(/host/zabbix[host,agent,available],5m)=0

Ten wyzwalacz uruchamia się, jeśli agent Zabbix na hoście jest niedostępny przez 5 minut.
Funkcja: max
Pozycja danych: zabbix[host,agent,available]

Alternatywnie:

nodata(/host/agent.ping,5m)=1

Ten wyzwalacz uruchamia się, jeśli przez 5 minut nie odebrano żadnych danych od agenta Zabbix.
Funkcja: nodata
Pozycja danych: agent.ping

Wykrywanie niedostępnego proxy
fuzzytime(/host/zabbix[proxy,{$PROXY_NAME},lastaccess],1m)=0

Ten wyzwalacz uruchamia się, jeśli dane proxy Zabbix są opóźnione względem czasu serwera Zabbix o 1 minutę.
Funkcja: fuzzytime
Pozycja danych: zabbix[proxy,{$PROXY_NAME},lastaccess]

Wykrywanie niedostępnego klastra SMTP
last(/smtp1.example.com/net.tcp.service[smtp])=0 and last(/smtp2.example.com/net.tcp.service[smtp])=0

Ten wyzwalacz uruchamia się, jeśli oba serwery SMTP są niedostępne.
Funkcja: last
Pozycja danych: net.tcp.service

Wykrywanie nieosiągalnego hosta
count(/host/icmpping,30m,,"0")>5

Ten wyzwalacz uruchamia się, jeśli host jest nieosiągalny przez ping więcej niż 5 razy w ciągu ostatnich 30 minut.
Funkcja: count
Pozycja danych: icmpping

Wykrywanie nieoczekiwanego restartu
change(/host/system.uptime)<0

Ten wyzwalacz uruchamia się, jeśli zostanie wykryta ujemna zmiana wartości czasu działania systemu (co wskazuje na restart).
Funkcja: change
Pozycja danych: system.uptime

Wykrywanie zmian w ważnych plikach
last(/host/vfs.file.cksum[/etc/passwd],#1)<>last(/host/vfs.file.cksum[/etc/passwd],#2)

Ten wyzwalacz uruchamia się, jeśli plik /etc/passwd został zmieniony. Wyrażenie jest prawdziwe, gdy poprzednia suma kontrolna /etc/passwd różni się od najnowszej. Podobne wyrażenia mogą być przydatne do monitorowania zmian w ważnych plikach, takich jak /etc/passwd, /etc/inetd.conf, /kernel itd.
Funkcja: last
Pozycja danych: vfs.file.cksum

Wykrywanie zmian w zapytaniu DNS
last(/Zabbix server/net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1])<>"{$WEBSITE_NAME}           {$DNS_RESOURCE_RECORD_TYPE}       0 mail.{$WEBSITE_NAME}"

Zwróć uwagę na cudzysłowy wokół drugiego operandu.

Ten wyzwalacz uruchamia się, jeśli wynik zapytania nie jest równy temu, co zwykle zwraca:

example.com           MX       0 mail.example.com

Funkcja: last
Pozycja danych: net.dns.record[192.0.2.0,{$WEBSITE_NAME},{$DNS_RESOURCE_RECORD_TYPE},2,1], z makrami zdefiniowanymi jako:

{$WEBSITE_NAME} = example.com
{$DNS_RESOURCE_RECORD_TYPE} = MX
Wykrywanie niezgodnego oprogramowania na różnych hostach
last(/host/vfs.file.contents[/etc/os-release])<>last(/host2/vfs.file.contents[/etc/os-release])

Ten wyzwalacz uruchamia się, jeśli wersja Ubuntu jest różna na różnych hostach. Zwróć uwagę, że operandami są tutaj funkcje zwracające ciągi znaków.
Funkcja: last
Pozycja danych: vfs.file.contents

Wykrywanie niezsynchronizowanych zegarów
fuzzytime(/host/system.localtime,10s)=0

Wyzwalacz uruchamia się, jeśli lokalny czas klienta i czas serwera Zabbix różnią się o więcej niż 10 sekund.
Funkcja: fuzzytime
Pozycja danych: system.localtime

Należy pamiętać, że system.localtime musi być skonfigurowana jako sprawdzenie pasywne dla agenta Zabbix; w Zabbix agent 2 może być skonfigurowana jako sprawdzenie aktywne.

Wykrywanie nieaktualnego agent
find(/host/agent.version,,"like","beta")=1

Ten wyzwalacz uruchamia się, jeśli Zabbix agent ma wersję beta. Zabbix agent wymaga aktualizacji.
Funkcja: find
Pozycja danych: agent.version

Wykrywanie niestabilnego interfejsu
changecount(/host/vfs.file.contents["/sys/class/net/eth0/operstate"],1h)>5 

Ten wyzwalacz uruchamia się, jeśli stan operacyjny (up/down/unknown) interfejsu eth0 zmienił się więcej niż 5 razy w ciągu godziny.
Funkcja: changecount
Pozycja danych: vfs.file.contents

Wykrywanie wysokiego ruchu przychodzącego
min(/host/net.if.in[eth0,bytes],5m)>100K

Ten wyzwalacz uruchamia się, jeśli liczba odebranych bajtów na eth0 w ciągu ostatnich pięciu minut była zawsze większa niż 100 kilobajtów. Prawdopodobnie ktoś pobiera duży plik.
Funkcja: min
Pozycja danych: net.if.in[eth0,bytes]

Wykrywanie małej ilości wolnego miejsca na dysku
max(/host/vfs.fs.size[/,free],5m)<10G

Wyzwalacz uruchamia się, jeśli ilość wolnego miejsca na dysku jest stale (przez 5 minut) poniżej 10 GB.

Można również zdefiniować wyrażenie odzyskiwania:

min(/host/vfs.fs.size[/,free],10m)>40G

Problem zostaje rozwiązany dopiero wtedy, gdy ilość wolnego miejsca na dysku jest stale (przez 10 minut) powyżej 40 GB.
Funkcja: min
Pozycja danych: vfs.fs.size

Wykrywanie małej ilości wolnego miejsca na dysku (próg dynamiczny)
last(/template/hrStorageFree[{#SNMPVALUE}])<last(/template/hrStorageSize[{#SNMPVALUE}])*0.1

Wyzwalacz uruchamia się, jeśli ilość wolnego miejsca w pamięci masowej (w jednostkach alokacji) spadnie poniżej 10 procent. Zwróć uwagę na użycie wartości innej pozycji do uzyskania adaptacyjnego progu wyzwalacza, mającego zastosowanie do wykrytej pamięci masowej o różnej wielkości. Funkcja: last

Wykrywanie wysokiego obciążenia CPU
last(/host/system.cpu.load[all,avg1])>5

Wyzwalacz uruchamia się, gdy średnie obciążenie procesora przekracza 5 przez jedną minutę.

Warianty:

min(/host/system.cpu.load[all,avg1],5m)>2 and time()<060000
min(/host/system.cpu.load[all,avg1],5m)>2 and not (dayofweek()=7 and time()>230000) and not (dayofweek()=1 and time()<010000)

Takie wyzwalacze analizują dane z 5 minut i uruchamiają się tylko wtedy, gdy obciążenie CPU nigdy nie spada poniżej 2. Dodatkowo te wyzwalacze uruchamiają się:

  • tylko w nocy (00:00-06:00)
  • o dowolnej porze z wyjątkiem 2 godzin podczas zmiany tygodnia (niedziela, 23:00 - poniedziałek, 01:00)
(last(/host/system.cpu.load[all,avg1])>5) + (last(/host2/system.cpu.load[all,avg1])>5) + (last(/host3/system.cpu.load[all,avg1])>5)>=2

Ten wyzwalacz uruchamia się, jeśli obciążenie procesora jest zbyt wysokie na co najmniej dwóch z trzech hostów.
Funkcje: last, min, dayofweek, time
Pozycja danych: system.cpu.load

Porównanie obciążeń CPU
avg(/Zabbix server/system.cpu.load,1h)/avg(/Zabbix server/system.cpu.load,1h:now-1d)>2

Wyzwalacz uruchamia się, jeśli średnie obciążenie dzisiaj przekracza średnie obciążenie z tej samej godziny wczoraj (z użyciem przesunięcia czasu now-1d) ponad dwukrotnie.
Funkcja: avg
Pozycja danych: system.cpu.load

Porównanie długoterminowego obciążenia CPU
trendavg(/host/system.cpu.load,1M:now/M)>1.1*trendavg(/host/system.cpu.load,1M:now/M-1M)

Ten wyzwalacz uruchamia się, jeśli obciążenie CPU na hoście wzrosło w ostatnim miesiącu o więcej niż 10%
Funkcja: trendavg
Pozycja danych: system.cpu.load

Możesz również użyć pola Nazwa zdarzenia w konfiguracji wyzwalacza, aby zbudować zrozumiały komunikat alertu, na przykład aby otrzymać coś takiego

"Obciążenie serwera Exchange wzrosło o 24% w lipcu (0.69) w porównaniu do czerwca (0.56)"

nazwa zdarzenia musi być zdefiniowana jako:

Load of {HOST.HOST} server increased by {{?100*trendavg(//system.cpu.load,1M:now/M)/trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(0)}% in {{TIME}.fmttime(%B,-1M)} ({{?trendavg(//system.cpu.load,1M:now/M)}.fmtnum(2)}) comparing to {{TIME}.fmttime(%B,-2M)} ({{?trendavg(//system.cpu.load,1M:now/M-1M)}.fmtnum(2)})

Przy tego rodzaju problemie przydatne jest również zezwolenie na ręczne zamykanie w konfiguracji wyzwalacza.

Wykrywanie ciągu zawierającego znaki specjalne
last(/host/vfs.file.contents[/tmp/hello])={$HELLO_MACRO}

Wyzwalacz uruchamia się, jeśli zawartość /tmp/hello jest równa ciągowi zdefiniowanemu w {$HELLO_MACRO}:

{$HELLO_MACRO} = \" //hello ?\"

Alternatywnie można porównać bezpośrednio do ciągu:

last(/Zabbix server/vfs.file.contents[/tmp/hello])="\\\" //hello ?\\\""

Zwróć uwagę, że znaki specjalne (\\ i ") są poprzedzone znakiem ucieczki, gdy ciąg jest porównywany bezpośrednio.

Funkcja: last
Pozycja danych: vfs.file.contents

Masz przykład wyrażenia wyzwalacza, który inni mogą uznać za przydatny?
Prześlij swój przykład (w tym zarówno wyrażenie, jak i kontekst), korzystając z naszego formularza sugestii, aby wysłać go do deweloperów Zabbix.