zabbix 触发器主要是监测某个性能参数是否在合理范围内,在合理范围内处于正常状态,不在合理范围内就触发,然后执行相应的的action,进而可以发送邮件或者短信给用户。
trigger表达式的使用规则
{<server>:<key>.<function>(<parameter>)}<operator><constant>
大括号中包括的为主机名字以及对于的key,我们选择相应的主机和key时系统自动生成了 就,关键是后边部分
key 就是监控数据时使用的key
Function为trigger使用的函数,以及函数相对应的参数。大括号后跟着 的是trigger识别的操作符
函数参数:
大部分情况下,如果只是一个数字的话往往代表秒的意思
eg:sum(600) 600秒钟的和 sum(#5) 最后5秒钟的和
5m 代表5分钟
1d 代表一天
1k 代表1024 bytes
可以使用的操作符:
+ - * / < > # & |
eg:
last() 函数,min()函数,diff(),count(),nodata()
{ www.solutionware.com.cn:system.cpu.load[all,avg1].last(0)}>5| {www.solutionware.com.cn:system.cpu.load[all,avg1].min(10m)}>2
{zabbix.zabbix.com:icmpping.count(30m,0)}>5 #在最后30分钟主机不能ping通的次数大于5就报警
({TRIGGER.VALUE}=0&{server:vfs.fs.size[/,free].max(5m)}<10G) |
({TRIGGER.VALUE}=1&{server:vfs.fs.size[/,free].min(10m)}<40G)
如上有两个小括号,前面一个表示触发异常的条件,后面一个表达式表示解除异常的条件
剩余空间小于10G就触发异常,然后接下来剩余空间必须大于40G才能解除这个异常
trigger表单属性:
name trigger name,这个名称可能包含macros,$1..$9可以被用来关联表达式的常量。
expression 逻辑表达式用来收集触发器的状态
触发器的名字可以使用 {#IFNAME} {ITEM.VALUE} //如果在discovery中的trigger的名字中使用了{#IFNAME}类似的变量,则在action调用时会有异常
应用例子:
磁盘使用空间大约90% 告警 {Discovery:vfs.fs.size[{#FSNAME},pused].last()}>90
2分钟内没有监测到磁盘数据 告警 {Discovery:vfs.fs.size[{#FSNAME},total].nodata(2m)}=1
磁盘util 持续5分钟大于90% 告警 {Discovery:disk.resource[{#DISKNAME},util].avg(10m)}>90
内存利用率持续5分钟大于90% 告警 {Discovery:mem.resource[pused].avg(5m)}>90
CPU 空闲持续10分钟小于10% 告警 {Discovery:system.cpu.util[,idle].avg(10m)}<10
HDFS 利用率大约90% 告警 {a100:hdfs.resource[dfs.pused].last()}>90
HDFS dead 数量大于 1 告警 {a100:hdfs.resource[dead.nodes].last()}>0
zabbix 客户端服务器关闭 告警 {a100:agent.ping.nodata(15s)}=1 //使用nodata时需要结合监控项目的数据更新时间
Actions
邮件内容模板:
Server [{HOSTNAME1}] Failure {ITEM.NAME}:{ITEM.VALUE}
Alarm host: {HOSTNAME1}
Alarm Time: {EVENT.DATE} {EVENT.TIME}
Alarm Level: {TRIGGER.SEVERITY}
Trigger Name: {TRIGGER.NAME}
Details: {ITEM.NAME}:{ITEM.VALUE}
Current State: {TRIGGER.STATUS}
Event ID: {EVENT.ID}