前言:我们都知道zabbix基本配置就是 hosts =》 items =》triggers =》 actions =》 media =》Email,这应该算是一个基本的zabbix报警实现,那zabbix如何添加trigger就是个必须掌握的技能了。


* 一、Zabbix的Trigger添加


* 二、Trigger的创建


* 三、表达式


* 四、依赖关系


* 五、告警级别


* 六、单位符号


一、zabbix的Trigger添加

=== 首先当然是先创建一个Hosts,并确保能够正常监控,并创建一个可用的Items

wKiom1dL0R7B3wVwAADExMehh2w563.png

=== 然后就是点击创建triggers了

wKiom1dLz8bRHrctAADUETWlklk256.png

Configuration——》Host——》Create Trigger


二、Trigger的创建

wKiom1dL2feAJUUJAABZ_pdVVeg099.pngTrigger的各选项含义:

         * Name:设置Trigger的名称。

                       名称中可支持使用宏Macros来定义。{HOST.HOST}, {HOST.NAME}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALUE}, {ITEM.LASTVALUE} and {$MACRO}。

                       还可以使用$1,$2,$3...$9表示位置参数使用。

         * Expression:Trigger的表达式

         * Multiple PROBLEM events generation:设置该选项可以在触发器产生problem的时候,触发一个事件(一般不勾选)

         * Description:对这个Trigger的描述信息,例如联系人信息,触发器说明等

         * URL:该URL可以作为Monitoring ——》 Trigger 中的一个链接来点击。该参数还支持一个Macros(TRIGGER.ID)

         * Severity:设置trigger被触发时的告警级别

         * Enabled:选择是否启用


三、表达式

Trigger最重要的就是它的表达式的写法:

        语法格式:{<server>:<key>.<function>(parameter)}<operator><constant>

        ① server:表达式的作用于哪个 host 上,默认当然是你选择的host了

        ② key:item中填写的监控项

        ③ function:Trigger function 是zabbix内置的触发器函数,可收集返回值、当前时间和其他参数

        ④ parameter:parameter是function的参数,具体设置成什么,需要看使用哪种function。(后面会加一个function的博客做为笔记查询)

                   例:avg(sec|#num,<time_shift>)

                   说明:大多数函数都支持 sec | #num。

                              sec:最近多少秒内收集的值

                              #num:最近多少次收集的值。(有的founction可能为最近第几次收集的值,如last)

                              time_shift:类似偏移量,多少秒之前收集的值

                    avg(3600,86400)  一天前的一个小时内收集的值的平均值

         ⑤ operator:运算符号,支持如下

                     算数运算符:+、-、*、/

                     比较运算符:<、<=、=、>、>=、<>(不等于)

                     连接运算符:and(与)、or(或)、not(非)、-(负数)

               注:not、and和or运算符号是区分字符大小写,并且必须小写。

                       所有运算符中,除了 - 和 not 都是从左至右

          ⑥ constant:常量,通常是一个数字


         例如:

                    {10.6.3.90:vfs.file.md5sum[/etc/passwd].diff()}=1

                    该表达式主要是用来判断“主机密码文件是否有被修改”


四、依赖关系

wKioL1dL-v2gPI6bAABXijMtI9g762.pngDependencies:

         有这样一个场景,主机a依赖于主机b,如果主机b的网络出现故障,则zabbix server会同时收到 a 和 b 的故障告警信息。但实际上只有 b 是故障的。

          因此,添加依赖关系后,其他主机故障并不会导致多态主机的trigger被触发。


依赖要点:

         (1) 触发关系可从任何主机添加到其他主机触发器,只要它不被陷入死循环即可

         (2) 触发关系可以从模板到模板的方式添加。但其对应关系需要理清楚。

         (3) 触发关系也可以从template trigger 到 host trigger。当template trigger 到 host trigger,将使得 template中的其他trigger也依赖于host。

         (4) 可以不添加从host trigger到template trigger


添加之后就会显示 depends on:

wKioL1dL-keydwxcAABmBfdesKs597.png


五、告警级别

wKiom1dL-7PQvdfMAAC5tcNSlR4167.png

用户可自定义修改Trigger的告警级别和颜色:

         Administration ——》 General ——》 Tigger severities

告警级别说明:

         Not classified——Grey:                   没有告警    《——》  灰色

         Information——Light green:               消息        《——》  淡绿

         Warning——Yellow:                        警告        《——》  ×××

         Average——Orange:                        平均问题    《——》  橘色

         High——red:                              高等级告警  《——》  红色

         Disaster——Bright red:                   灾难        《——》  亮红色


六、单位符号

我们在Trigger表达式中经常要写大段的时间或字节大小,但如果添加了单位符号,则无需将值计算到最小值单位。

时间单位:

          s:秒

          m:分钟

          h:小时

          d:天

          w:周

时间单位使用对象:

           1、trigger expression

           2、内建item,zabbix[queue,<from>,<to>]

           3、aggreeagte checks 汇总检查

前缀符号:显示单位,默认是Bps,这些计量单位应该很好理解。

           K:kilo,     公斤,2^10

           M:mega,百万,2^20

           G:Giga, 千兆,2^30

           T:Tera,  兆兆,2^40

     注:如果item的值使用的是B,则单位换算为1k=1000,否则,单位换算为1K=1024。


个人见解:个人觉得Zabbix Trigger的核心就是Trigger表达式,只要掌握这个,其他的功能不必太过追求。Linux要学的东西太多,如果要把每个知识点都掌握全,那你学习的速度很难跟各种服务版本迭代的速度。掌握自己需要的,放弃一些不必要的,也是一种学习方法吧。