函數介紹
abschange 參數:忽略 支持類型:float,int,str,text,log 作用:返回最近獲得的值與之前獲得值差的絕對值,對於字符串類型:0表示相等,1表示不同
avg 參數:秒或#num 支持類型:float,int 作用:返回一段時間的平均值 舉例: avg(5):最后5秒的平均值 avg(#5):表示最近5次得到值的平均值 avg(3600,86400):表示一天前的一個小時的平均值 如果僅有一個參數,表示指定時間的平均值,從現在開始算起,如果有第二個參數,表示漂移,從第二個參數前開始算時間, #n表示最近n次的值 示例: 觸發器名稱:Comparing average load today with average load of the same time yesterday (使用 time_shift 時間偏移量參數). {server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2 This expression will fire if the average load of the last hour tops the average load of the same hour yesterday more than two times. max 參數:秒或#num 支持值類型:float,int 描述:返回指定時間間隔的最大值.時間間隔作為第一個參數可以是秒或收集值的數目(前綴為#).從Zabbix1.8.2開始,函數支持第二個可選參數time_shift,可以查看avg()函數獲取它的使用方法. 示例: 觸發器名稱:Free disk space is too low Problem: 最近5分鍾內剩余磁盤空間小於10GB ({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) min 參數:秒或#num 支持值類型:float,int 描述:返回指定時間間隔的最小值.時間間隔作為第一個參數可以是秒或收集值的數目(前綴為#).從Zabbix1.8.2開始,函數支持第二個可選參數time_shift,可以查看avg()函數獲取它的使用方法. 示例: 觸發器名稱:Free disk space is too low Problem:最近10分鍾內磁盤空間大於40GB ({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G) nodata 參數:秒 支持值類型:any 描述:當返回值為1表示指定的間隔(間隔不應小於30秒)沒有接收到數據,0表示其他. 示例: 觸發器名稱:No heartbeats within last 3 minutes 使用函數 nodata(): {zabbix.zabbix.com:tick.nodata(3m)}=1 change 參數:忽略 支持類型:float,int,str,text,log 作用:返回最近獲得值與之前獲得值的差值,對於字符串0表示相等,1表示不同 舉例: change(0)>n:忽略參數一般輸入0,表示最近得到的值與上一個值的差值大於n count 參數:秒或#num 支持類型:float,int,str,text,log 作用:返回指定時間間隔內數值的統計, 舉例: 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: 內容匹配 date 參數:忽略 支持類型:any 作用:返回當前的時間,格式YYYYMMDD dayofmonth 返回當前是本月的第幾天
dayofweek 返回當前是本周的第幾天
delta 參數:秒或#num 支持類型:float,int 作用:返回時間間隔內的最大值與最小值的差值 diff 參數:忽略 支持值類型:float,int,str,text,log 作用:返回值為1表示最近的值與之前的值不同,0為其他情況 示例: 觸發器名稱:/etc/passwd has been changed 使用函數 diff(): {www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0 fuzzytime 參數:秒 支持值類型:float,int 作用:返回值為1表示監控項值的時間戳與ZabbixServer的時間多N秒,0為其他.常使用system.localtime來檢查本地時間是否與Zabbixserver時間相同. 示例: 觸發器名稱:Check if client local time is in sync with Zabbix server time 使用函數 fuzzytime(): {MySQL_DB:system.localtime.fuzzytime(10)}=0 主機MySQL_DB當前服務器時間如果與zabbix server之間的時間相差10秒以上,表達式返回true,觸發器狀態改變為“problem” last 參數:秒或#num 支持值類型:float,int,str,text,log 作用:最近的值,如果為秒,則忽略,#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 參數:忽略 支持值類型:log 描述:返回最近日志條目的日志等級(logseverity).當返回值為0時表示默認等級,N為具體對應等級(整數,常用於Windowseventlogs).Zabbix日志等級來源於Windowseventlog的Information列. logsource 參數:string 支持值類型:log 描述:檢查最近的日志條目是否匹配參數的日志來源.當返回值為0時表示不匹配,1表示匹配。通場用於Windowseventlogs監控.例如logsource["VMWareServer"] now 參數:忽略 支持值類型:any 描述:返回距離Epoch(1970年1月1日00:00:00UTC)時間的秒數 prev 參數:忽略 支持值類型:float,int,str,text,log 描述:返回之前的值,類似於last(#2) regexp 參數:第一個參數為string,第二個參數為秒或#num 支持值類型:str,log,text 描述:檢查最近的值是否匹配正則表達式,參數的正則表達式為POSIX擴展樣式,第二個參數為秒數或收集值的數目,將會處理多個值.本函數區分大小寫。當返回值為1時表示找到,0為其他. str 參數:第一個參數為string,第二個參數為秒或#num 支持值類型:str,log,text 描述:查找最近值中的字符串。第一個參數指定查找的字符串,大小寫敏感。第二個可選的參數指定秒數或收集值的數目,將會處理多個值。當返回值為1時表示找到,0為其他. 示例: 觸發器名稱:Zabbix agent needs to be upgraded 使用函數str(): {zabbix.zabbix.com:agent.version.str("beta8")}=1 如果當前zabbix agent版本包含beta8(假設當前版本為1.0beta8),這個表達式會返回true. strlen 參數:秒或#num 支持值類型:str,log,text 描述:指定最近值的字符串長度(並非字節),參數值類似於last函數.例如strlen(0)等價於strlen(#1),strlen(#3)表示最近的第三個值,strlen(0,86400)表示一天前的最近的值.該函數從Zabbix1.8.4起開始支持 sum 參數:秒或#num 支持值類型:float,int 描述:返回指定時間間隔中收集到的值的總和.時間間隔作為第一個參數支持秒或收集值的數目(以#開始).從Zabbix1.8.2開始,本函數支持time_shift作為第二個參數。可以查看avg函數獲取它的用法 time 參數:忽略 支持值類型:any 描述:返回當前時間,格式為HHMMSS,例如123055
函數案例
- # 最新返回值不等於1就觸發
- {test:key.last(0)}<>1
- # 最新返回值等於1就觸發
- {test:key.last(0)}=1
- # 連續三分鍾平均值在80%就觸發
- {test:key.avg(3m)}>80
- # 連續三分鍾最大值在80%以上就觸發
- {test:key.max(3m)}>80
內置觸發器案例
- # 如果agent客戶端斷開連接3分鍾就返回1就出發報警
- # 注:agent ,需要先建立監控項,可在模板中查看。
- 觸發器:{test:agent.ping.nodata(3m)}=1
- # 如果CPU使用率1分鍾平均值超80%就報警
- # 監控部署:名稱:CPU $2 time、鍵值:system.cpu.util[,idle]、信息類型:浮點數、單位:%
- 觸發器:{test:system.cpu.util[,idle].avg(3m)}<20