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:
Funkcje wyzwalaczy pozwalaj? odwo?a? si? do zebranych danych, aktualnego czasu i innych informacji.
Dost?pna jest kompletna lista wspieranych 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.
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 |
Obci??enie procesora jest zbyt du?e na www.zabbix.com
'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.
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.
Zmieniono /etc/passwd
U?yjemy funkcji diff:
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.
Kto? ?ci?ga du?e pliki z internetu
U?yjemy funkcji min:
Wyra?enie jest prawdziwe, gdy liczba otrzymanych bajt¨®w na eth0 jest wi?ksza od 100 KB w przeci?gu ostatnich 5 minut.
Oba w?z?y klastrowego serwera SMTP nie dzia?aj?
Zauwa?, ?e u?ywamy dw¨®ch r¨®?nych host¨®w w jednym wyra?eniu:
Wyra?enie jest prawdziwe, gdy oba serwery SMTP smtp1.zabbix.com i smtp2.zabbix.com, nie dzia?aj?.
Nale?y zaktualizowa? agenta Áú»¢¶Ä²©
U?yjemy funkcji str():
Wyra?enie jest prawdziwe, gdy agent Áú»¢¶Ä²© jest w wersji beta8 (na przyk?ad 1.0beta8).
Serwer jest niedost?pny
Wyra?enie jest prawdziwe, gdy host "zabbix.zabbix.com" jest niedost?pny d?u?ej ni? 5 minut w przeci?gu ostatnich 30 minut.
Brak pulsu w ostatnich 3 minutach
U?yjemy funkcji nodata():
'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.
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).
Sprawdzenie, czy czas klienta jest zsynchronizowany z czasem serwera Áú»¢¶Ä²©
U?yjemy funkcji fuzzytime():
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.
Por¨®wnanie dzisiejszego ?redniego obci??enia z obci??eniem wczorajszym o tej samej porze (przy u?yciu drugiego parametru przesuni?cia_czasu
).
Wyra?enie zadzia?a je?eli ?rednie obci??enie z ostatniej godziny przekroczy dwukrotne ?rednie obci??enie z godziny z poprzedniego dnia.
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:
Temperatura w pokoju serwera jest zbyt wysoka
Zauwa?, ?e u?ywamy makra {TRIGGER.VALUE}. Makro zwraca aktualn? warto?? wyzwalacza.
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.