【Zabbix系列教程】触发器和报警

第一期教程:【Zabbix系列教程】Server端部署教程
上一期教程:【Zabbix系列教程】Agent端部署教程

一、触发器

1.作用

  • 触发某个监控项状态的变化
  • 基于监控项创建
  • 一个监控项可以有多个触发器

2.触发器语法

{<server>:<key>.<function>(<parameter>)}<operator><constant>
{<被监控机名称>:<键值>.函数(参数)}<操作符><常量>

例:监控node01主机上的TCP22号端口的最新数据

{node01.linux.com:net.tcp.port[22].last()}=0

操作符

>大于
>=大于等于
<小于
<=小于等于
=等于
<>不等于
+
-
*
/
and并且
or或者

常见函数

  • sum( )求和
    • sum(5m) #5分钟的数据求和
    • sum(10) #10秒内所有的数据求和
    • sum(#3) #最后三个值的和
  • avg( )
    • 平均
  • max( )
    • 最大值
  • min( )
    • 最小值
  • count( )
    • 统计
  • last( )
    • 获取某个监控项最新的数据
  • diff( )
    • 判断数据与上一次的数据是否不同
  • date( )
    • 获取日期 YYYYMMDD
  • time( )
    • 获取时间 HHMMSS

示例1:www.zabbix.com网站处理器负载过高

{www.zabbix.com:system.cpu.load[all,avg1].last()}>5

www.zabbix.com:system.cpu.load[all,avg1]给出了被监控参数的简短名称。它指定了服务器是www.zabbix.com,监控项的键值是system.cpu.load[all,avg1]。通过使用函数last()获取最新的值。最后,>5意味着当www.zabbix.com最新获取的处理器负载值大于5时触发器就会处于异常状态。

示例2:passwd文件是否改动

{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1

当文件/etc/passwdchecksum值与最近的值不同时,表达式为true

示例3:夜间CPU的负载情况

{zabbix:system.cpu.load[all,avg1].min(5m)}>2 and {zabbix:system.cpu.load[all,avg1].time()}>000000 and {zabbix:system.cpu.load[all,avg1].time()}<060000

仅在夜间00:00-06:00,触发器状态变可以变为真

更多示例请查看官方文档:https://www.zabbix.com/documentation/4.0/zh/manual/config/triggers/expression

3.创建触发器

A.在创建触发器之前,请先创建监控项

这里以检测httpd80端口为例子

zabbix4-32

B.创建触发器

zabbix4-33

一个简单的触发器创建好了

C.测试触发器

停掉httpd服务
[root@node1 ~]# systemctl stop httpd
回到web界面,测试触发器是否工作

zabbix4-34

二、报警器

本教程以邮件报警为例

1.恢复httpd服务

[root@node1 ~]# systemctl start httpd

zabbix4-35

2.以刚才创建的触发器为例,创建报警器

先配置报警媒介

zabbix4-36

zabbix4-37

QQ邮箱获取SMTP服务秘钥

zabbix4-38

如果您是第一次启用,会生成一个随机的秘钥,请妥善保管,并且把秘钥输入到zabbix的配置中!

zabbix4-39

测试邮件

这里的邮件地址不一定是别人的,也可以自己发给自己哦!

zabbix4-40

3.给zabbix管理员绑定邮箱(重要)

此配置用于,今后报警器自动发送邮件的时候,接收邮件的用户!

zabbix4-41

zabbix4-42

4.创建动作

zabbix4-43

zabbix4-44

zabbix4-45

也可以自定义蓝色框框中的内容
关于更多官方文档:https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

zabbix4-46

zabbix4-47

到这里,我们的报警器就创建完成了

5.测试报警器

A.停用httpd服务

[root@node1 ~]# systemctl stop httpd

B.查看web端和邮箱

zabbix4-48

zabbix4-49

C.恢复服务

[root@node1 ~]# systemctl start httpd

D.查看邮件

zabbix4-50