Áú»¢¶Ä²©

This is the documentation page for an unsupported version of Áú»¢¶Ä²©.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

2 Wyra?enie wyzwalacza

Przegl?d

Wyra?enia u?ywane w wyzwalaczach s? bardzo elastyczne. Mo?na ich u?y? do tworzenia z?o?onych test¨®w logicznych zale??cych od monitorowanych statystyk.

Proste wyra?enie mo?e wygl?da? nast?puj?co:

{<serwer>:<klucz>.<funkcja>(<parametr>)}<operator><sta?a>

1 Funkcje

Funkcje wyzwalaczy pozwalaj? odwo?a? si? do zebranych danych, aktualnego czasu i innych informacji.

Dost?pna jest kompletna lista wspieranych funkcji.

2 Parametry funkcji

Wi?kszo?? funkcji numerycznych traktuje parametr jako liczb? sekund.

?eby zaznaczy?, ?e parametr ma inne znaczenie, nale?y u?y? prefiksu #:

WYWO?ANIE FUNKCJI ZNACZENIE
sum(600) Suma wszystkich warto?ci z 600 sekund
sum(#5) Suma ostatnich pi?ciu warto?ci

Funkcja last inaczej traktuje warto?ci z prefiksem # - wybiera n-t? poprzedni? warto??, zatem maj?c warto?ci 3, 7, 2, 6, 5 (od najnowszej do najstarszej), last(#2) ³ú·É°ù¨®³¦¾± 7 a last(#5) powinno ³ú·É°ù¨®³¦¾±? 5.

Funkcje avg, count, last, min i max obs?uguj? dodatkowy, drugi parametr przesuni?cie_czasu. Parametr ten pozwala odwo?a? si? do okresu czasu w przesz?o?ci. Na przyk?ad, avg(1h,1d) ³ú·É°ù¨®³¦¾± warto?? ?redni? z godziny, z poprzedniego dnia.

Wyzwalacze przetwarzaj? tylko informacje z historii. Je?eli historia nie jest dost?pna (szczeg¨®lnie wa?ne przy przesuni?ciu czasu), nie b?d? u?ywane dane trend¨®w, zatem historia powinna by? przechowywana przynajmniej dla okresu, jakiego oczekuj? funkcje wyzwalaczy.

W wyra?eniach wyzwalaczy mo?na u?ywa? wspieranych jednostek miary, na przyk?ad '5m' (minut) zamiast '300' sekund lub '1d' (dzie¨½) zamiast '86400' sekund. '1K' oznacza? b?dzie '1024' bajty.

3 Operatory

Nast?puj?ce operatory s? obs?ugiwane przez wyzwalacze (w kolejno?ci priorytetu wykonania):

PRIORYTET OPERATOR DEFINICJA
1 / Dzielenie
2 *** |Mno?enie | |3** - Minus arytmetyczny
4 + Plus arytmetyczny
5 < Mniejsze ni?. Operator zdefiniowany jest jako:
A<B <=> (A<=B-0.000001)
6 > Wi?ksze ni?. Operator zdefiniowany jest jako:
A>B <=> (A>=B+0.000001)
7 # R¨®?ne. Operator zdefiniowany jest jako:
A#B <=> (A<=B-0.000001) | (A>=B+0.000001)
8 = R¨®wne. Operator zdefiniowany jest jako:
A=B <=> (A>B-0.000001) & (A<B+0.000001)
9 & Logiczne I
10 | Logiczne LUB

4 Przyk?ady wyzwalaczy

Przyk?ad 1

Obci??enie procesora jest zbyt du?e na www.zabbix.com

{www.zabbix.com:system.cpu.load[all,avg1].last()}>5

'www.zabbix.com:system.cpu.load[all,avg1]' to nazwa skr¨®cona monitorowanego parametru. Okre?la, ?e serwerem jest 'www.zabbix.com' a monitorowanym kluczem jest 'system.cpu.load[all,avg1]'. U?ywaj?c funkcji 'last()', odwo?ujemy si? do ostatniej warto?ci. Na koniec, '>5' oznacza, ?e wyzwalacz znajdzie si? w stanie PROBLEM za ka?dym razem, gdy pomiar obci??enia procesora z www.zabbix.com przekroczy 5.

Przyk?ad 2

www.zabbix.com jest przeci??ony

{www.zabbix.com:system.cpu.load[all,avg1].last()}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2 

Wyra?enie to jest prawdziwe, gdy obci??enie procesora jest wi?ksze od 5 lub gdy obci??enie procesora by?o wi?ksze od 2 przez 10 ostatnich minut.

Przyk?ad 3

Zmieniono /etc/passwd

U?yjemy funkcji diff:

{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}>0

Wyra?enie jest prawdziwe, gdy poprzednia warto?? sumy kontrolnej /etc/passwd b?dzie r¨®?na od aktualnej.

Podobnych wyra?e¨½ mo?na u?ywa? do monitorowania zmian w wa?nych plikach, takich jak /etc/passwd, /etc/inetd.conf, /kernel, itp.

Przyk?ad 4

Kto? ?ci?ga du?e pliki z internetu

U?yjemy funkcji min:

{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K

Wyra?enie jest prawdziwe, gdy liczba otrzymanych bajt¨®w na eth0 jest wi?ksza od 100 KB w przeci?gu ostatnich 5 minut.

Przyk?ad 5

Oba w?z?y klastrowego serwera SMTP nie dzia?aj?

Zauwa?, ?e u?ywamy dw¨®ch r¨®?nych host¨®w w jednym wyra?eniu:

{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last()}=0

Wyra?enie jest prawdziwe, gdy oba serwery SMTP smtp1.zabbix.com i smtp2.zabbix.com, nie dzia?aj?.

Przyk?ad 6

Nale?y zaktualizowa? agenta Áú»¢¶Ä²©

U?yjemy funkcji str():

{zabbix.zabbix.com:agent.version.str("beta8")}=1

Wyra?enie jest prawdziwe, gdy agent Áú»¢¶Ä²© jest w wersji beta8 (na przyk?ad 1.0beta8).

Przyk?ad 7

Serwer jest niedost?pny

{zabbix.zabbix.com:icmpping.count(30m,0)}>5

Wyra?enie jest prawdziwe, gdy host "zabbix.zabbix.com" jest niedost?pny d?u?ej ni? 5 minut w przeci?gu ostatnich 30 minut.

Przyk?ad 8

Brak pulsu w ostatnich 3 minutach

U?yjemy funkcji nodata():

{zabbix.zabbix.com:tick.nodata(3m)}=1

'tick' musi by? typu 'Áú»¢¶Ä²© trapper'. ?eby ten wyzwalacz zadzia?a?, nale?y zdefiniowa? pozycj? 'tick'. Host powinien wysy?a? okresowo dane dla tego parametru przy u?yciu zabbix_sender. Je?eli w przeci?gu 180 sekund nie zostan? odebrane ?adne dane, stan wyzwalacza zmieni si? na PROBLEM.

Przyk?ad 9

Aktywno?? CPU w godzinach nocnych

U?yjemy funkcji time():

{zabbix:system.cpu.load[all,avg1].min(5m)}>2&{zabbix:system.cpu.load[all,avg1].time()}>000000&{zabbix:system.cpu.load[all,avg1].time()}<060000

Wyzwalacz mo?e zmieni? sw¨®j stan jedynie w godzinach nocnych (00:00-06:00).

Przyk?ad 10

Sprawdzenie, czy czas klienta jest zsynchronizowany z czasem serwera Áú»¢¶Ä²©

U?yjemy funkcji fuzzytime():

{MySQL_DB:system.localtime.fuzzytime(10)}=0

Wyzwalacz zmieni sw¨®j stan na problem w przypadku, gdy lokalny czas serwera MySQL_DB i czas serwera Áú»¢¶Ä²© r¨®?ni? si? wi?cej ni? 10 sekund.

Przyk?ad 11

Por¨®wnanie dzisiejszego ?redniego obci??enia z obci??eniem wczorajszym o tej samej porze (przy u?yciu drugiego parametru przesuni?cia_czasu).

{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2

Wyra?enie zadzia?a je?eli ?rednie obci??enie z ostatniej godziny przekroczy dwukrotne ?rednie obci??enie z godziny z poprzedniego dnia.

5 Histereza

Czasami wyzwalacz musi mie? r¨®?ne warunki dla r¨®?nych stan¨®w. Na przyk?ad, chcemy zdefiniowa? wyzwalacz, kt¨®ry zmieni stan na PROBLEM, gdy temperatura w pokoju serwera przekroczy 20C i powinien w nim pozosta? a? temperatura obni?y si? poni?ej 15C.

?eby to zrobi? definiujemy nast?puj?cy wyzwalacz:

Przyk?ad 1

Temperatura w pokoju serwera jest zbyt wysoka

({TRIGGER.VALUE}=0&{server:temp.last()}>20)|
       ({TRIGGER.VALUE}=1&{server:temp.last()}>15)

Zauwa?, ?e u?ywamy makra {TRIGGER.VALUE}. Makro zwraca aktualn? warto?? wyzwalacza.

Przyk?ad 2

Zbyt ma?o wolnej przestrzeni na dysku

Problem: jest mniej ni? 10GB wolnej przestrzeni w ci?gu ostatnich 5 minut

Odzyskanie: jest wi?cej ni? 40GB wolnej przestrzeni w ci?gu ostatnich 10 minut

({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) |
       ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)

Zauwa?, ?e u?ywamy makra {TRIGGER.VALUE}. Makro zwraca aktualn? warto?? wyzwalacza.