1、trigger 配置屬性
name tirgger的名稱,可以支持宏:{HOST.HOST}、{HOST.NAME}、
Expression:對觸發器狀態計算的邏輯正則表達式
Multiple PROBLEM events generation
Description 對觸發器的描述
url: 一般設置可用宏爲- {TRIGGER.ID}
severity: not classified 未知安裝等級 灰色
information 一般信息 亮綠
warning 警告信息 黃色
average 一般故障 橙色
high 高級別故障 紅色
disaster 致命故障 亮紅
2、Trigger 告警依賴
告警依賴是指一個事件的成立需要依賴另一個的事件存在。這種情況適合於邏輯比較複雜的業務,例如,一個IDC的路由器出現故障時,機房內所有的機器都會因爲狀態不可獲取而產生告警,但作爲管理人員,並不想同時接收所有的故障,只需要接收到一條有效的告警“XXX的IDC 機房路由器X發生故障,將會影響整個機房的使用"
3、Trigger 正則中的單位
S:seconds
m: minutes
h: hosts
d: days
w: weeks
k: kilo
M: mega
G: giga
T: tera
P: peta
E: exa
z: zetta
Y: yotta
例如:以下語句:
{host:zabbix[proxy,zabbix_proxy,lastaccess]} > 120
{host:system.uptime[].last(0)} < 86400
{host:system.cpu.load.avg(600)} < 10
可以寫成:
{host:zabbix[proxy,zabbix_proxy,lastaccess]} > 2m
{host:system.uptime[].last(0)} < 1d
{host:system.cpu.load.avg(10m)} < 10
函數的形參指的是函數可以接收不同的參數
在形參中,"#"在不同的函數中具有不同的含義,例如:
sum(600)表示最近600秒內獲取到的數值求和。
sum(#5)表示最近取到5個值得和
last(#5)表示返回給定的第5個值,時間最早的值爲第一個。例如:給定值3、7、2、6、5,last(#2)的值爲7,last(#5)的值爲5
last(0),即最後一次的值,0爲參數。
4、Trigger 函數
(1) abschange
描述:返回最近獲取到的值與之前的差值的絕對值。對於字符串類型,0表示值相等,1表示值不同。
例如: {server.vfs.fs.size[/,free].abschange(10m)}<10,表示在server設備中,key值{{server.vfs.fs.size[/,free]最近一次獲取到的值的和在前10分鐘的差值爲10,其結果可能最近一次值比之前大,也有可能比之前的值小,即從-10到0,再到10之間的範圍,可以叫做抖動值或者誤差範圍。
(2) avg
參數:秒或#num
支持值類型:float和int
描述:返回指定時間間隔的平均值
例如:{server:vfs.fs.size[/,free].avg(#5,10m)} < 50G,表示在server設備中,key值vfs.fs.size[/,free]最近10分鐘內,最近5次取值的平均值小於50G。
(3) change
描述:返回最近獲取的值與之前值得差值,對於字符串類型,0表示值相等,1表示值不同。
(4) count
參數:秒或#num
描述:返回指定時間間隔內的數值統計。時間間隔可以通過第一個參數設置爲時間或收集值得數目。
實例:
count(600):最近10分鐘值得個數
count(600,12):最近10分鐘值等於12的個數
count(600,12,"gt"): 最近10分鐘值大於12的個數
count(#10,12,"gt"): 最近的10個值中,值大於12的個數
(5) date
支持值類型:所有(any)
描述:返回當前日期
(6) dayofmonth
描述:返回當前是本月第幾天(數值範圍爲1-31)
(7) dayofweek
返回當前是本週第幾天,星期一是1,星期天是7
(8) delta
參數: 秒或#num
描述:返回指定時間間隔內最大值與最小值。時間間隔作爲第一個參數,可以是秒或者收集值得數目。
例如:{switch:net.if.in[eth0].delta(10m)} > 10M,表示設備switch的接口eth0在最近10分鐘內,最大值和最小值之間的差大於10M,即認爲故障發生。
(9) diff
支持值類型:float int str text和log
描述:返回值爲1,表示最近的值與之前的值不同,0爲其他情況。
例如:{windows:agent.version.diff(0)} > 0 ,表示設備Windows的agent.version在最近一次值與之前的值不同。
(10) fuzzytime
參數:秒
支持值類型:float和int
描述:返回值1,表示監控項值得時間戳比zabbix-server的時間對n秒,0爲其他情況。常使用system.localtime來檢查本地時間是否與zabbix-server的時間相同。
(11) iregexp
參數:第一個爲字符串,第二個爲秒或#num
支持值類型:str、log、text
描述:與regexp類似,區別是不區分大小寫
(12)last
參數:秒或#num
支持值類型:float、int、str、text和log
描述:最近的值,如果爲秒,則忽略,#num表示最近第N個值
示例:
last(10) 等價於last(#1)
last(#3) 表示最近獲取的監控項值得第三個值
例如:{mysql:mysql.ping.last(#3,5m)} = 0,表示設備mysql在最近5分鐘內的第三次取值結果爲0,即認爲故障發生。
(13) logeventid
參數:string
支持值類型:log
描述:檢查最近的日誌條目的event ID是否匹配正則表達式。參數爲正則表達式,POSIX擴展樣式。當返回值爲0時,表示不匹配,1表示匹配。
(14)logseverity
支持值類型:log
描述:返回最近日誌條目的日誌等級。當返回值爲0時,表示默認等級
(15)logsource
支持值類型:log
描述:檢查最近的日誌條目是否匹配參數的日誌來源。當返回值爲0時,表示不匹配,1表示匹配。通常用於windows event logs監控,例如:logsource["VMWare Server"]
(16) max
參數:秒或#num
藐視:返回指定時間間隔的最大值。時間間隔作爲第一個參數,可以使秒或收集值得數目。
例如:{ftpserver:net.tcp.service[ftp].max(#3)} = 0 ,表示設備ftpserver中的key爲net.tcp.service[ftp]在最近3次獲取到的最大值都爲0,則視爲故障。
(17)min
描述:返回指定時間間隔的最小值。
例如:{gateway:icmppingloss.min(5m)} > 20,表示gateway設備在5分鐘內用icmppingloss在最近5分鐘內獲取的最小值爲20,即故障發生。
(18)nodata
描述:當返回值爲1時,表示指定的間隔,沒有接收到數據,0表示其他情況。
例如:{v.itnihao.com:agent.ping.nodata(5m)} = 1,表示設備v.itnihao.com的agent.ping在最近5分鐘內沒有接收到數據,即發生故障。
(19)now
描述:返回距離Epoch 時間的秒數
(20)prve
支持值類型:float int str text 和log
描述:返回之前的值,類似於last(#2)
(21)regexp
描述:檢查最近的值是否匹配正則表達式,參數的正則表達式爲POSIX擴展樣式,第二個參數爲秒數或手機值得數目,將會處理多個值。本函數區分大小寫。當返回值爲1時,表示找到,0表示其他情況。
(22)str
參數:第一個參數爲string,第二個參數爲秒或#num。
支持值類型:str log text
描述:查找最近值中的字符串。第一個參數指定查找的字符串。大小寫敏感。第二個可選的參數指定秒數或收集值得數目,將會處理多個值。當返回值爲1時,表示找到,0爲其他情況。
例如:{Tomcat:jmx["Catalina:type=ProtocolHander,port=8080",compression].str(off)} = 1,表示找到,0表示爲其他情況
(23)strlen
參數:秒或#num
支持值類型:str、log、text
描述:指定最近值得字符串長度,參數值類似於last函數,例如:strlen(0)等價於strlen(#1),stelen(#3)表示最近的第三個值,strlen(0,86400)表示一天前最近的值。
(24)sum
參數:秒或者#num
支持值類型:float和int
描述:返回指定時間間隔中收集到的值的總和。時間間隔作爲第一個參數,支持秒或收集值得數目。
(25)time
描述:返回當前時間,格式爲HHMMSS,例如:123055