天天看點

13、Trigger表達式

Trigger表達式:

Zabbix Trigger的表達式高度靈活,可以建立出非常複雜的測試條件,基本的觸發器表達式如下:

{<server>:<key>.<function>(parameter)}<operator><constant>    constant 常數

例如:{10.10.10.202:net.tcp.service[http,,80].last()}=0

server:主機名稱;

key:主機上關聯的相應監控項的key;

function:評估采集到的資料是否存在合理範圍内時 所使用的函數;評估過程可以根據采集的資料、目前時間及其它因素進行

目前觸發器所支援的函數有avg、count、change(改變值大小)、date(時間)、dayofweek(星期幾)、delta、diff(不同之處)、iregexp(基于正規表達式比對)、last(最後一次采樣)、max、min、nodata(沒采集到資料)、now、sum等

patameter:函數參數;大多數數值函數可以接受秒數為其參數,而如果再參數使用之前使用“#” 作為字首,則表示為最近幾次的取值,如sum(300)表示300秒内所有取值之和,而sum(#10) 則表示最近10次取值之和;此外,avg、count、last、min和max還支援使用第二個參數,用于完成時間限定,例如,max(1h,7d)将傳回一周之前一小時内的最大值

建立觸發器可用的各屬性說明

Name:觸發器名稱,可使用宏,如$1、$2....$9等

Expression:邏輯表達式,用于評估觸發器狀态

Multiple PROBLEM events generation:依賴于目前觸發器“Problem”狀态生成其他事件;

Description:目前觸發器的描述資訊;

URL:在screen的“Status of  Trigger“中顯示的内容的連結;

Severity:目前觸發器的嚴重級别

Enabled:是否啟用目前觸發器

<a href="http://s2.51cto.com/wyfs02/M02/82/BF/wKiom1df0HXju3K7AAGxt0rh-qE261.png" target="_blank"></a>

Trigger運算符:

Trigger支援的運算符如下:

<a href="http://s2.51cto.com/wyfs02/M01/82/BE/wKioL1df0ebwVuQ4AAHDLLPqKdE020.png" target="_blank"></a>

觸發器的函數表達式

函數表達式也算是表達式中的一部分,不過内容比較多,這裡單獨拿出來總結 。

abschange

參數:忽略

支援類型:float,int,str,text,log

作用:傳回最近獲得的值與之前獲得值差的絕對值,對于字元串類型:0表示相等,1表示不同

avg

參數:秒或#num

支援類型:float,int

作用:傳回一段時間的平均值

舉例:

avg(5):最後5秒的平均值

avg(#5):表示最近5次得到值的平均值

avg(3600,86400):表示一周前的一個小時内的平均值

如果僅有一個參數,表示指定時間的平均值,從現在開始算起,如果有第二個參數,表示漂移,從第二個參數前開始算時間,

#n表示最近n次的值

max

參數:秒或#num

支援值類型:float,int

描述:傳回指定時間間隔的最大值.時間間隔作為第一個參數可以是秒或收集值的數目(字首為#).從Zabbix1.8.2開始,函數支援第二個可選參數time_shift,可以檢視avg()函數擷取它的使用方法.

min

描述:傳回指定時間間隔的最小值.時間間隔作為第一個參數可以是秒或收集值的數目(字首為#).從Zabbix1.8.2開始,函數支援第二個可選參數time_shift,可以檢視avg()函數擷取它的使用方法.

sum

描述:傳回指定時間間隔中收集到的值的總和.時間間隔作為第一個參數支援秒或收集值的數目(以#開始).從Zabbix1.8.2開始,本函數支援time_shift作為第二個參數。可以檢視avg函數擷取它的用法

change

作用:傳回最近獲得值與之前獲得值的內插補點,對于字元串0表示相等,1表示不同

change(0)&gt;n:忽略參數一般輸入0,表示最近得到的值與上一個值的內插補點大于n

count

作用:傳回指定時間間隔内數值的統計,

count(600)最近10分鐘得到值的個數

count(600,12)最近10分鐘得到值的個數等于12

count(600,12,"gt")最近10分鐘得到值的個數大于12

count(#10,12,"gt")最近10個值中,值大于12的個數

count(600,12,"gt",86400)24小時之前的10分鐘内值大于12的個數

count(600,6/7,"band")-thenumberofvaluesforlast10minuteshaving'110'(inbinary)inthe3leastsignificantbits.

count(600,,,86400)24小時之前的10分鐘資料值的個數

第一個參數:指定時間段

第二個參數:樣本資料

第三個參數:操作參數

第四個參數:漂移參數

#支援的操作類型

eq: 相等

ne: 不相等

gt: 大于

ge: 大于等于

lt: 小于

le: 小于等于

like: 内容比對

diff

參數:忽略

支援值類型:float,int,str,text,log

作用:傳回值為1表示最近的值與之前的值不同,0為其他情況

last

作用:最近的值,如果為秒,則忽略,#num表示最近第N個值,請注意目前的#num和其他一些函數的#num的意思是不同的

例子:

last(0)等價于last(#1)

last(#3)表示最近第3個值(并不是最近的三個值)本函數也支援第二個參數time_shift,例如last(0,86400)傳回一天前的最近的值

如果在history中同一秒中有多個值存在,Zabbix不保證值的精确順序

#num從Zabbix1.6.2起開始支援,timeshift從1.8.2其開始支援,可以查詢avg()函數擷取它的使用方法

logeventid

參數:string

支援值類型:log

描述:檢查最近的日志條目的EventID是否比對正規表達式.參數為正規表達式,POSIX擴充樣式.當傳回值為0時表示不比對,1表示比對。該函數從Zabbix1.8.5起開始支援.

logseverity

描述:傳回最近日志條目的日志等級(logseverity).當傳回值為0時表示預設等級,N為具體對應等級(整數,常用于Windowseventlogs).Zabbix日志等級來源于Windowseventlog的Information列.

logsource

描述:檢查最近的日志條目是否比對參數的日志來源.當傳回值為0時表示不比對,1表示比對。通場用于Windowseventlogs監控.例如logsource["VMWareServer"]

prev

描述:傳回之前的值,類似于last(#2)

regexp

參數:第一個參數為string,第二個參數為秒或#num

支援值類型:str,log,text

描述:檢查最近的值是否比對正規表達式,參數的正規表達式為POSIX擴充樣式,第二個參數為秒數或收集值的數目,将會處理多個值.本函數區分大小寫。當傳回值為1時表示找到,0為其他.

str

描述:查找最近值中的字元串。第一個參數指定查找的字元串,大小寫敏感。第二個可選的參數指定秒數或收集值的數目,将會處理多個值。當傳回值為1時表示找到,0為其他.

strlen

描述:指定最近值的字元串長度(并非位元組),參數值類似于last函數.例如strlen(0)等價于strlen(#1),strlen(#3)表示最近的第三個值,strlen(0,86400)表示一天前的最近的值.該函數從Zabbix1.8.4起開始支援

time

支援值類型:any

描述:傳回目前時間,格式為HHMMSS,例如123055

date

支援類型:any

作用:傳回目前的時間,格式YYYYMMDD

dayofmonth

傳回目前是本月的第幾天

dayofweek

傳回目前是本周的第幾天

delta

支援類型:float,int

作用:傳回時間間隔内的最大值與最小值的內插補點

nodata

參數:秒

描述:當傳回值為1表示指定的間隔(間隔不應小于30秒)沒有接收到資料,0表示其他.

now

描述:傳回距離Epoch(1970年1月1日00:00:00UTC)時間的秒數

fuzzytime

作用:傳回值為1表示監控項值的時間戳與ZabbixServer的時間多N秒,0為其他.常使用system.localtime來檢查本地時間是否與Zabbixserver時間相同.

trigger表達式舉例:

{www.magedu.com:system.cpu.load[all,avg1].last(0)}&gt;3

 對于last函數來說,last(0)相當于last(#1)

{www.zabbix.com:system.cpu.load[all,avg1].last(0)}&gt;5

#系統負載大于5就報警

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

#cpu負載大于5或者最後10分鐘負載大于2的時候都會報警。

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

#/etc/passwd檔案改變會報警

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

#在最後5分鐘,網卡eth0的流量大于100K報警

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

#兩個節點上的smtp服務都當機才會報警,該表達式用了兩個主機

{zabbix.zabbix.com:icmpping.count(30m,0)}&gt;5

#在最後30分鐘主機不能ping通的次數大于5就報警

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1789212,如需轉載請自行聯系原作者

繼續閱讀