zabbix探究告警触发器Triggers
Triggers函數的分類
功能 函數
值的比較與查找 abschange、delta、diff、band、change、nodata、last、prev
值的計算 max、min、avg、sum、count
時間 now、time、date、dayofmonth、dayofwek、fuzzytime
日志 logeventid、logseverity、logsource
字符串匹配 iregexp、regexp、str、strlen
趨勢預測 percentile、forecast、timeleft
Trigger函數----比較 與查找
求最近兩值差的絕對值----abschange
函數功能
返回最近兩值差的絕對值,即最近獲取到的值與前一個值的差的絕對值,數學表達式為|last_value - prev_value|。如果值為字符串類型,則其絕對值返回0或1,其中0表示值相等,1表示值不等。該函數常用于在一個范圍波動的場合。
函數參數
不支持任何參數的傳入
支持數據類型
支持float、int、str、text
求最大值與最小值的差----delta
函數功能
在指定的一段時間內,或者指定數據個數,用其中的最大值減去最小值得出的差(max-min),數學表達式為max{v1,v2,…vn}-min{v1,v2…vn},其中v1,v2,…vn為時間T內的數值。該函數適用于最大值和最小值比較的場合,如系統的最高負載和最低負載的差值。
函數用法
delta(sec|#num,<time_shift>)>N #最大值與最小值的差值大于N
delta(sec|#num,<time_shift>)<N #最大值與最小值的差值小于N
delta(sec|#num,<time_shift>)=N #最大值與最小值的差值等于N
delta(sec|#num,<time_shift>)<>N #最大值與最小值的差值不等于N
delta(10m,1d)>10 # 表示1天前的10分鐘數據的最大值與最小值的差大于10
delta(#5,1d)>10 # 表示1天前的連續5個數據的最大值與最小值的差大于10
delta(10m)>10 # 表示最近10分鐘內的數據的最大值與最小值的差大于10
delta(#5)>10 # 表示最近連續5個數值的最大值與最小值的差大于10
函數參數
第一個參數為秒或#num
第二個參數為某個時間段前(time_shift)
數據類型
支持float和int數據類型
判斷最近兩值是否相同----diff
函數功能
比較最近數據的值和前一個數據的值,如果兩值相同,函數運行結果則為0,不同則為1.通過比較最近兩次的數值是否相同,從而判斷出運行狀態,如檢測主機名,系統版本是否發生變化等。
函數用法
diff()=0 #最近兩值相同
diff()=1 #最近倆值不同
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
求最近兩值的變化量----change
函數功能
返回最近數據值與前一次數據值的差,顧其運算結果的值可以是正數(>0),也可以是負數(<0)。當數據類型為字符串是,如果最近兩值相等,則結果為0,如果不相等,則結果為1.比如系統啟動時間小于上一次,則說明系統已經發生重啟。
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型。
數據失聯----nodata
函數功能
檢測一段時間內是否接收到數據,返回值為1表示沒有接收到數據,返回值為0表示接收到數據了。
函數參數
只支持一個時間參數,如30S、5m、1h,時間參數必須大于或等于30S,這是因為歷史數據同步進程(History Syncer Process)是每隔30S執行一次這個函數的。
數據類型
支持float、int、str、text和log數據類型。
獲取最新數據----last
函數功能
獲取最近一段時間內或指定個數的數據,如求最近系統的允許進程數量。
函數用法
last(sec|#num,<time_shift>)
last(3m)=N #最近3分鐘監控數值等于N
last(#3)>N # 第3次的監控數值大于N
last(#3,3m)<N #最近3分鐘第3次的監控數值小于N
注意:#num表示最近的第N個值,與其他函數#num的意思是不同的數據類型
支持float、int、str、text和log數據類型
求前一個值----prev
函數功能
求前一個數據的值,等同于last(#2)
函數用法
prev()=N #前一個值等于N
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
Trigger函數----計算
求最大值----max
函數功能
在指定的一段時間內,或者指定數據個數,找出最大值,數學表達式為max{v1,v2,…vn},其中Vn為時間T內的數值。判斷取值是否都為0,如3次取值的最大值都為0。
函數用法
max(sec|#num,<time_shift>)
max(5m)>N #最近5分鐘內取值的最大值
max(#3)=N #最近3次取值的最大值
max(#3,10m)<>N #10分鐘前3次取值的最大值
max(10m,1d)<>N #1天之前10分鐘內取值的最大值
函數參數
第一個參數為秒或#num(監控指標數值的個數)
第二個參數為某個時間段前
數據類型
支持float和int數據類型
求最小值----min
函數功能
在指定的一段時間內,或者指定數據個數,找出最小值,數學表達式為min{v1,v2…vn},其中v1,v2…vn為時間T內的數值。判斷取值是否都為0。
函數用法
min(sec|#num,<time_shift>)
min(5m)>N #最近5分鐘內取值的最小值
min(#3)=N #最近3次取值的最小值
min(#3,10m)<>N #10分鐘前3次取值的最小值
min(10m,1d)<>N #1天之前10分鐘內取值的最小值
函數參數
第一個參數為秒或#num(監控指標數值的個數)
第二個參數為某個時間段前
數據類型
支持float和int數據類型
求平均值----avg
函數功能
在指定的一段時間內,或者指定數據個數,求平均值,數學表達式為avg{v1,v2…vn},其中v1,v2…vn為時間T內的數值。判斷取值是否都為0,如3次取值的平均值為0。
函數用法
avg(sec|#num,<time_shift>)
avg(5m)>N #最近5分鐘內取值的平均值
avg(#3)=N #最近3次取值的平均值
avg(#3,10m)<>N #10分鐘前3次取值的最平均值
avg(10m,1d)<>N #1天之前10分鐘內取值的平均值
函數參數
第一個參數為秒或#num(監控指標數值的個數)
第二個參數為某個時間段前
數據類型
支持float和int數據類型
值求和----sum
函數功能
在指定的一段時間內,或者指定數據個數,求所有值的和,數學表達式為sum{v1,v2…vn},其中v1,v2…vn為時間T內的數值。
函數用法
sum(sec|#num,<time_shift>)
sum(5m)>N #最近5分鐘內取值的所有數據相加求和
sum(#3)=N #最近3次取值的所有數據相加求和
sum(#3,10m)<>N #10分鐘前3次取值的所有數據相加求和
sum(10m,1d)<>N #1天之前10分鐘內取值的所有數據相加求和
函數參數
第一個參數為秒或#num(監控指標數值的個數)
第二個參數為某個時間段前
數據類型
支持float和int數據類型
統計個數----count
函數功能
在指定的一段時間內,或者指定數據個數,統計數值個數,數學表達式為count{v1,v2…Vn},其中v1,v2…Vn為時間T內的數值
函數用法
count(sec|#num,,,<time_shift>)
count(10m) #最近10分鐘內數值的個數
count(600,12) #最近10分鐘內數值等于12的個數
count(10m,“error”,eq) #最近10分鐘內等于“error”的值的數量
count(10m,12,gt) #最近10分鐘內超過12的值的數量
count(#10,12,gt) #最近10個值超過12的值數量
count(10m,12,gt,1d) #1天前10的最近10分鐘內超過12的值的數量
count(10m,6/7,band) #最近10分鐘的值數,其中3個最低有效位為‘110’(二進制)
count(10m,1d) #1天前的最近10分鐘的值的數量
函數參數
eq:相等
ne:不相等
gt:大于
ge:大于或等于
lt:小于
le:小于或等于
like:內容匹配
band:位與運算
regexp:正則表達式匹配
iregexp:忽略大小寫的正則表達式匹配
運算符支持的數據類型如下:
eq(默認)、ne、gt、ge、lt、le、band、regexp、iregexp支持整數
eq(默認)、ne、gt、ge、lt、le、regexp、iregexp支持浮點數
like(默認)、eq、ne、regexp、iregexp支持字符串、文本、日志
數據類型
支持float、int、str、text和log數據類型
Trigger函數----時間
返回當前時間(年月日時分秒) ----now
函數功能
返回當前時間,距離Epoch(1970年1月1日 00:00:00UTC)時間的秒數。
函數用法
now()=1535877351 # 當前時間的時間戳等于1535877351
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
返回當前日期(年月日)----date
函數功能
返回當前日期(格式為YYYYMMDD),例如20190102.
函數用法
date()=20190102 # 當前日期等于20190102
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
返回當前時間(時分秒)----time
函數功能
返回當前時間,格式為HHMMSS,例如123055
函數用法
time()=123055 #當前時間等于12:30:55
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
本月第幾天-----dayofmonth
函數功能
返回當前時間是本月第幾天(數值范圍為1~31)
函數用法
dayofmoth()-30 # 當前時間等于當月第30
函數參數
不支持任何參數的傳入
數據類型
支持float、int、str、text和log數據類型
本周第幾天----dayofweek
函數功能
返回當前時間是本周第幾天(數值范圍為1~7),星期一是1,星期天是7。
函數用法
dayofweek()=3 # 當前時間等于周三
函數參數
不支持任何參數的傳入
數據類型
所有數據類型
時間對比----fuzzytime
函數功能
將zabbix-agent的時間戳與zabbix-server的時間戳進行比較,如果差異超過指定的時間段,則函數返回值為0;如果時間戳小于間隔值,則函數返回值為1.
通常使用system.localtime來檢查zabbix-agent端的時間與zabbix-server端的時間是否存在差異。
函數用法
fuzzytime(sec)
fuzzytime(5m)=0 #監控項的時間與zabbix-server的時間相差大于5分鐘
函數參數
支持一個參數,即時間,如fuzzytime(5m)
數據類型
支持float和int數據類型
Trigger函數----日志
日志ID----logeventid
函數功能
檢查最近的日志條目的event id是否與正則表達式匹配。參數為正則表達式,POSIX擴展樣式。當返回值為0時,表示不匹配,當返回值為1時,表示匹配。
函數用法
logeventid(pattern)
函數參數
支持一個參數,可以使用正則表達式
數據類型
僅支持log數據類型
獲取日志等級----logseverity
函數功能
返回最近的日志條目的日志等級N(log serverity)。當返回值為0時,表示默認等級,N為具體對應的等級(整數)。通常用于Windows event logs監控。Zabbix日志等級來源于Windows event logs的Information列。
函數功能
logseverity()=0 #日志等級為0
函數參數
不支持任何參數的傳入
數據類型
僅支持log數據類型
獲取日志來源----logsource
函數功能
檢查最近的日志數據來源是否與正則表達式匹配。當返回值為0時,表示不匹配;當返回值為1時,表示匹配。通常用于windows event logs監控,例如logsource[“VMWare Server”]
函數用法
logsource(pattern)
logsource(“web”) = 0 # 未匹配到web日志源
函數參數
支持一個參數,可以使用正則表達式
數據類型
僅支持log數據類型
Trigger函數----字符串匹配
正則表達式不區分大小寫----iregexp
函數功能
從值中查找與正則表達式匹配的數值,不區分大小寫。當正則表達式匹配數值時,結果為1,當正則表達式不匹配數值時,結果為0。通常用于從字符串中正則匹配數據,如從日志中匹配報錯、異常、關鍵字等。
函數用法
iregexp(pattern,<sec|#num>)
iregexp(green) <>1 # 未檢測到green字符串
函數參數
第一個參數為匹配的字符串
第二個參數為秒或#num(監控指標數值的個數)
數據類型
支持str、log和text數據類型
正則表達式區分大小寫----regexp
函數功能
從值中查找與正則表達式匹配的數值,區分大小寫。當正則表達式匹配數值時,結果為1,當正則表達式不匹配數值時,結果為0。通常用于從字符串中正則匹配數據,如從日志中匹配報錯、異常、關鍵字等。
函數用法
regexp(pattern,<sec|#num>)
regexp(ON,#3) <>1 # 3次結果都未檢測到ON字符串
函數參數
第一個參數為匹配的字符串
第二個參數為秒或#num(監控指標數值的個數)
數據類型
支持str、log和text數據類型
字符串匹配-----str
函數功能
從值中查找字符串,區分大小寫。當從數值中找到匹配值時,結果為1;如果未找到匹配的值,則結果為0。該函數在日志、文本、字符等場景中使用,可以通過此函數來判斷版本、角色等信息。
函數用法
str(pattern,<sec|#num>)
函數參數
第一個參數匹配的字符串,大小寫敏感
第二個參數為秒或#num(監控指標數值的個數)
支持str、log和text數據類型
字符串長度----strlen
函數功能
判斷字符串長度與預期是否相同,比如獲取md5值,應該是32位的,如果不是32位的,則說明該數據與預期不匹配。
函數用法
strlen(sec|#num,<time_shift>)
判斷設備是否掛載成功
例:strlen(#1)=0 最后一次數據的字符串等于0就告警
數據類型
支持str、log和text數據類型
Trigger函數----趨勢預測
百分線----percentile
函數功能
在指定的一段時間內,取出百分線值數。比如網絡帶寬流量,在某段時間內會有毛刺,去掉最高的幾個值,計算出次高的值。
函數用法
percentile(sec|#num,<time_shift>,percentage)
數據類型
支持float和int數據類型
趨勢預測----forecast
函數功能
預測監控指標未來的最大值、最小值、增量值或平均值,用于評估從現在開始到未來一段時間的數值變化情況。
函數用法
forecast(sec|#num,<time_shift>,time,,)
forecast(10m,1h,linear,value)
函數參數
第一個參數為秒或#num(監控指標數值的個數),以最新采集到的數據為依據,以HASH標記開開頭;
第二個參數為某個時間段前(time_shift),如1h之前的時間
第三個參數為時間(time),以秒為單位,即從現在往后的時間。如果是之前的歷史數據,則為負數,如-20m表示20分鐘之前的數據
第四個參數為可選的歷史數據計算函數(fit),其支持的參數如下:
linear:線性函數
polynomialN:N次多項式(1<=N<=6)
exponential: 指數函數
logarithmic:對數函數
power:乘方(冪)函數
第五個參數為值的處理模式(mode).其中支持的參數如下
value:值(默認)
max:最大值
min:最小值
delta:最大值-最小值
avg:平均值
數據類型
支持float和int數據類型
剩余時間----timeleft
函數功能
監控指標達到設定的閾值所需要的時間(以秒為單位)
函數用法
timeleft(sec|#num,<time_shift>,threshold,)
函數參數
第一個參數為秒或#num(監控指標數值的個數),以最新采集到的數據為依據,以HASH標記開頭
第二個參數為某個時間段前(time_shift)
第三個參數為閾值(threshold),即所定義的趨勢閾值
第四個參數為可選的歷史數據計算函數(fit),請參考forecast參數
數據類型
支持float和int數據類型
總結
以上是生活随笔為你收集整理的zabbix探究告警触发器Triggers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF-Interaction.Trig
- 下一篇: 读过的好书推荐