{<server>:<key>.<function>(<parameter>)}<operator><constant> 某主機上某個key使用某個函數(參數)所得的值 和 設定的值比較 server:主機名稱 key:主機上相應監控項的key; function:評估採集到的數據是否在合理範圍內時所使用的函數,其評估過程能夠根據採起的數據、當前時間及其它因素進行;
avg、 求平均值
count、 指定時間內或次數內數值統計
change 指定時間內或次數內倒數第2次於倒數第1次的差值,對於字符串,0沒有變化,1表示有變化;
date、 當前日期
dayofweek、 本週第幾天 dayofmonth 本月第幾天
delta、 指定時間內或次數內最大值與最小值的差
diff、 指定時間內或次數內倒數第2次於倒數第1次的值,有沒有不一樣;經常使用於監控文件
regexp 檢查最後一次採樣的數據是否可以被指定的模式所匹配:1表示匹配,0表示不匹配
iregexp 不區分大小的正則表達式
last 最近採樣的數據
max、min、nodata(沒有數據)、
now 返回時間戳
prev 倒數第二個採樣值
str 從最後一次的採樣中查找此處指定的字符串;0表示找到,1表示沒找到
strlen 字符串長度比較
sum 求和
示例一node
觸發器名稱:Processor load is too high on www.zabbix.com正則表達式
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5
觸發器說明:服務器
www.zabbix.com:host名稱tcp
system.cpu.load[all,avg1]:item值,一份內cpu平均負載值函數
last(0):最新值spa
>5:最新值大於5code
如上所示,www.zabbix.com這個主機的監控項,最新的CPU負載值若是大於5,那麼表達式會返回true,這樣一來觸發器狀態就改變爲「problem」了regexp
示例二server
觸發器名稱:www.zabbix.com is overloadedblog
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5|{www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
當前cpu負載大於5或者最近10份內的cpu負載大於2,那麼表達式將會返回true.
示例三
觸發器名稱:/etc/passwd has been changed
使用函數 diff():
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0
/etc/passwd最新的checksum與上一次獲取到的checksum不一樣,表達式將會返回true. 咱們可使用一樣的方法監控系統重要的配置文件,例如/etc/passwd,/etc/inetd.conf等等。這些zabbix通常都會自帶,沒帶的你本身加上吧
示例四
觸發器名稱:Someone is downloading a large file from the Internet
使用函數 min:
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
當前主機網卡eth0最後5分鐘內接收到的流量超過100KB那麼觸發器表達式將會返回true
示例五
觸發器名稱:Both nodes of clustered SMTP server are down
{smtp1.zabbix.com:net.tcp.service[smtp].last(0)}=0&{smtp2.zabbix.com:net.tcp.service[smtp].last(0)}=0
當smtp1.zabbix.com和smtp2.zabbix.com兩臺主機上的SMTP服務器都離線,表達式將會返回true.
示例六
觸發器名稱:Server is unreachable
{zabbix.zabbix.com:icmpping.count(30m,0)}>5
如上表達式表示最近30分鐘zabbix.zabbix.com這個主機超過5次不可到達
Hysteresis(遲滯,滯後)
簡單的說觸發器狀態轉變爲problem須要一個條件,從problem轉變回來還須要一個條件才行。通常觸發器只須要不知足觸發器爲problem條件便可恢復。明白了麼?不明白就看例子吧。
有時候觸發器須要使用不一樣的條件來表示不一樣的狀態,舉個官網頗有趣的例子:機房溫度正常穩定爲15-20°,當溫度超過20°,觸發器值爲problem,直到溫度低於15°纔會接觸警報,異常會解除
示例一
觸發器名稱:Temperature in server room is too high
({TRIGGER.VALUE}=0&{server:temp.last(0)}>20)| ({TRIGGER.VALUE}=1&{server:temp.last(0)}<15)
如上有兩個小括號,前面一個表示觸發異常的條件,後面一個表達式表示解除異常的條件
注意:宏變量 {TRIGGER.VALUE}將會返回當前觸發器的值
示例二
觸發器名稱:Free disk space is too low
Problem: 最近5分鐘剩餘磁盤空間小於10GB。(異常)
Recovery: 最近10分鐘磁盤空間大於40GB。(恢復)
簡單說即是一旦剩餘空間小於10G就觸發異常,而後接下來剩餘空間必須大於40G才能解除這個異常,就算你剩餘空間達到了39G(不在報警條件裏)那也是沒用的
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) | ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)