zabbix触发器表达式
zabbix觸發(fā)器表達式
觸發(fā)器使用邏輯表達式來評估通過item獲取的數(shù)據(jù)是處于哪種狀態(tài),
觸發(fā)器中的表達式使用很靈活,我們可以創(chuàng)建一個復雜的邏輯測試監(jiān)控,觸發(fā)器表達式形式如下:
{<server>:<key>.<function>(<parameter>)}<operator><constant>{主機:key.函數(shù)(參數(shù))}常數(shù)
Functions函數(shù)
觸發(fā)器functions完整鏈接:
Function參數(shù)
| sum(600) | 600秒內的總和 |
| sum(#5) | 最新5個值的和 |
last函數(shù)使用不同的參數(shù)將會得到不同的值,#2表示倒數(shù)第二新的數(shù)據(jù)。例如從老到最新值為1,2,3,4,5,6,7,8,9,10,last(#2)得到的值為9,last(#9)得到的值為2。last()就是倒數(shù)第一個值。
AVG,count,last,min和max函數(shù)還支持額外的參數(shù),以秒為單位的參數(shù)time_shift(時間偏移量)。例如avg(1h,1d),那么將會獲取到昨天的1小時內的平均數(shù)據(jù)。
[warning]備注:觸發(fā)器表達式需要使用history歷史數(shù)據(jù)來計算,如果history不可用(time_shift時間偏移量參數(shù)無法使用),因此history記錄一定要保留長久一點,至少要保留需要用的記錄。[/warning]
觸發(fā)器表達式可以使用單位符號來替代大數(shù)字,例如5m替代300,或者1d替代86400,1k替代1024字節(jié)等等。
操作符
3.2及以上版本
| 1 | - | Unary minus | -Unknown → Unknown |
| 2 | not | Logical NOT | not Unknown → Unknown |
| 3 | ***** | Multiplication | 0 ***** Unknown → Unknown (yes, Unknown, not 0 - to not lose Unknown in arithmetic operations) 1.2 ***** Unknown → Unknown |
| / | Division | Unknown / 0 → error Unknown / 1.2 → Unknown 0.0 / Unknown → Unknown | |
| 4 | + | Arithmetical plus | 1.2 + Unknown → Unknown |
| - | Arithmetical minus | 1.2 - Unknown → Unknown | |
| 5 | < | Less than. The operator is defined as: A<B ? (A<B-0.000001) since Zabbix 3.4.9 A<B ? (A≤B-0.000001) before Zabbix 3.4.9 | 1.2 < Unknown → Unknown |
| <= | Less than or equal to. The operator is defined as: A<=B ? (A≤B+0.000001) since Zabbix 3.4.9 A<=B ? (A<B+0.000001) before Zabbix 3.4.9 | Unknown <= Unknown → Unknown | |
| > | More than. The operator is defined as: A>B ? (A>B+0.000001) since Zabbix 3.4.9 A>B ? (A≥B+0.000001) before Zabbix 3.4.9 | ||
| >= | More than or equal to. The operator is defined as: A>=B ? (A≥B-0.000001) since Zabbix 3.4.9 A>=B ? (A>B-0.000001) before Zabbix 3.4.9 | ||
| 6 | = | Is equal. The operator is defined as: A=B ? (A≥B-0.000001) and (A≤B+0.000001) since Zabbix 3.4.9 A=B ? (A>B-0.000001) and (A<B+0.000001) before Zabbix 3.4.9 | |
| <> | Not equal. The operator is defined as: A<>B ? (A<B-0.000001) or (A>B+0.000001) since Zabbix 3.4.9 A<>B ? (A≤B-0.000001) or (A≥B+0.000001) before Zabbix 3.4.9 | ||
| 7 | and | Logical AND | 0 and Unknown → 0 1 and Unknown → Unknown Unknown and Unknown → Unknown |
| 8 | or | Logical OR | 1 or Unknown → 1 0 or Unknown → Unknown Unknown or Unknown → Unknown |
3.0及其以下版本
| 1 | / | 除 |
| 2 | * | 乘 |
| 3 | - | 減 |
| 4 | + | 加 |
| 5 | < | 小于. 用法如下: A<B ? (A<=B-0.000001) |
| 6 | > | 大于. 用法如下: A>B ? (A>=B+0.000001) |
| 7 | # | 不等于.用法如下: A#B ? (A<=B-0.000001) | (A>=B+0.000001) |
| 8 | = | 等于. 用法如下: A=B ? (A>B-0.000001) & (A<B+0.000001) |
| 9 | & | 邏輯與 |
| 10 | | | 邏輯或 |
觸發(fā)器示例
示例一
觸發(fā)器名稱: Processor load is too high on www.zabbix.com
表達式:
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5說明:
www.zabbix.com host名稱 system.cpu.load[all,avg1] item值,一分鐘內的cpu平均負載值 last(o) 最新值 >5 大于5如上所示,www.zabbix.com這個主機的監(jiān)控項,最新的CPU負載值如果大于5,那么表達式會返回true,這樣一來觸發(fā)器狀態(tài)就改變?yōu)椤皃roblem”了。
示例二
觸發(fā)器名稱:www.zabbix.com is overloaded
表達式:
{www.zabbix.com:system.cpy.load[all,avg1].last(0)}>5|{www.zabbix.com:system.cpu.load[all,avg1].last(10m)}>2當前cpu負載大于5或者最近10分內的cpu負載大于2,那么表達式將會返回true。
示例三
觸發(fā)器名稱:/etc/passwd has been changed
表達式:
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff(0)}>0/etc/passwd最新的checksum與上一次獲取到的checksum不同,表達式將會返回true. 我們可以使用同樣的方法監(jiān)控系統(tǒng)重要的配置文件,例如/etc/passwd,/etc/inetd.conf等等
示例四
觸發(fā)器名稱:Someone is downloading a large file from the Internet
表達式:
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100k當前主機網(wǎng)卡eth0最后5分鐘內接收到的流量超過100KB那么觸發(fā)器表達式將會返回true
示例五
觸發(fā)器名稱: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.
示例六
觸發(fā)器名稱:Zabbix agent needs to be upgraded
表達式:
{zabbix.zabbix.com:agent.version.str("beta8")}=1如果當前zabbix agent版本包含beta8(假設當前版本為1.0beta8),這個表達式會返回true.
示例七
觸發(fā)器名稱:Server is unreachable
表達式:
{zabbix.zabbix.com:icmpping.count(30m,0)}>5最近30分鐘zabbix.zabbix.com這個主機超過5次不可達。
示例八
觸發(fā)器名稱:No heartbeats within last 3 minutes
表達式:
{zabbix.zabbix.com:tick.nodata(3m)}=1tick為Zabbix trapper類型,首先我們要定義一個類型為Zabbix trapper,key為tick的item。我們使用zabbix_sender定期發(fā)送數(shù)據(jù)給tick,如果在3分鐘內還未收到zabbix_sender發(fā)送來的數(shù)據(jù),那么表達式返回一個true,與此同時觸發(fā)器的值變?yōu)椤癙ROBLEM”。
示例九
觸發(fā)器名稱:CPU activity at night time
表達式:
{zabbix:system.cpu.load[all,avg1].min(5m)}>2&{zabbix:system.cpu.load[all,avg1].time(0)}>000000&{zabbix:system.cpu.load[all,avg1].time(0)}<060000只有在凌晨0點到6點整,最近5分鐘內cpu負載大于2,表達式返回true,觸發(fā)器的狀態(tài)變更為“problem”
示例十
觸發(fā)器名稱:Check if client local time is in sync with Zabbix server time
表達式:
{MySQL_DB:system.localtime.fuzzytime(10)}=0主機MySQL_DB當前服務器時間如果與zabbix server之間的時間相差10秒以上,表達式返回true,觸發(fā)器狀態(tài)改變?yōu)椤皃roblem”
示例十一
觸發(fā)器名稱:Comparing average load today with average load of the same time yesterday (使用 time_shift 時間偏移量參數(shù)).
表達式:
{server:system.cpu.load.avg(1h)}/{server:system.cpu.load.avg(1h,1d)}>2一小時內平均值超過昨天同一時刻的兩倍十觸發(fā)告警
Hysteresis(遲滯,滯后)
簡單的說觸發(fā)器狀態(tài)轉變?yōu)閜roblem需要一個條件,從problem轉變回來還需要一個條件才行。一般觸發(fā)器只需要不滿足觸發(fā)器為problem條件即可恢復。
有時候觸發(fā)器需要使用不同的條件來表示不同的狀態(tài),舉個官網(wǎng)很有趣的例子:機房溫度正常穩(wěn)定為15-20°,當溫度超過20°,觸發(fā)器值為problem,直到溫度低于15°才會接觸警報,異常會解除。
在zabbix3.2及其以上版本配置觸發(fā)器時就可以設置Problem expression和Recovery expression
示例一
觸發(fā)器名稱:Temperature in server room is too high
表達式
({TRIGGER.VALUE}=0&{server:temp.last()}>20)|({TRIGGER.VALUE}=1&{server:temp.last()}>15)如上有兩個小括號,前面一個表示觸發(fā)異常的條件,后面一個表達式的反面表示解除異常的條件。
示例二
觸發(fā)器名稱:Free disk space is too low
Problem: 最近5分鐘剩余磁盤空間小于10GB。(異常)
Recovery: 最近10分鐘剩余磁盤空間大于40GB。(恢復)
簡單說便是一旦剩余空間小于10G就觸發(fā)異常,然后接下來剩余空間必須大于40G才能解除這個異常,就算你剩余空間達到了39G(不在報警條件里)那也是沒用的。
表達式:
({TRIGGER.VALUE}=0&{server.vfs.fs.size[/,free].max(5m)}<10G)|({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)示例三
觸發(fā)器名稱:接口[{#PORT}]入口帶寬占用率過高
表達式:
({TRIGGER.VALUE}=0 and {7750_ip_route:port_bandwidth_in_ratio[{#PORT}].last()}>75) or ({TRIGGER.VALUE}=1 and {7750_ip_route:port_bandwidth_in_ratio[{#PORT}].max(3600)}>60)監(jiān)控項原型如下:
| [接口{#PORT}]入口帶寬占用率 | port_bandwidth_in_ratio[{#PORT}] | 5m | 7d | 90d | Service Robot采集器 | ML_APPLICATION, 接口帶寬占用率 | 已啟用 |
告警條件:入口帶寬占用率(>75%)
恢復條件:一個小時入口帶寬占用率(<60%)
參考:
http://www.ttlsa.com/zabbix/zabbix-trigger-expression/
https://www.zabbix.com/documentation/3.4/manual/config/triggers
轉載于:https://www.cnblogs.com/liao-lin/p/10299590.html
總結
以上是生活随笔為你收集整理的zabbix触发器表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用opencv简单的播放AVI程序(4
- 下一篇: Hbuilder:实现阴影透明背景特效