Zabbix 随笔:事件通知浅析(触发器篇)

2022-04-08 20:30:59 浏览数 (3)

每天都会发生不同的事件,在软件的世界也不例外,Zabbix 里所发生的一切也称为事件。Zabbix 的事件类型有如下几种

  • 触发器事件
  • 服务事件
  • 发现事件
  • 自动注册事件
  • 内部事件

如何知道这些事件的内容?也是本文要提的事件通知,不过本文的内容只涉及触发器事件,也是我们常说的告警。

正文

Zabbix 的事件是带有时间戳的,因此具备事件通知的基础条件,如果需要查看前端事件的详细信息,可以在 Monitoring ->Prombles 里查看,也可以单击时间查看时间的详细信息。

可以查看问题清单可以查看问题清单
点击时间戳查看问题详情点击时间戳查看问题详情

本文环境

  • RockyLinux 8.5
  • Zabbix 6.0.2 LTS

逻辑分析

事件通知用人话来讲,就是通知内容是什么?通知到谁?通过什么渠道通知到人?如果把这几个问题搞定了其实问题就不大了,全文将通过这三个问句探讨。

模拟主机告警

创建一个模拟主机,挂载 ICMP Ping 模板,该主机是一个不存在的主机

创建一个不存在的机器创建一个不存在的机器
触发告警触发告警

查看告警

回到首页,在默认仪表盘里是有问题模块的,可以看到相关告警,可以通过告警查看当前问题为 ICMP ping 不可达,这是通过内部的组件告诉你一台主机出现异常了,作为 NOC 团队看这个仪表盘的确就可以了,但前提是24小时得有人盯着这个仪表盘,那么如果相关业务的人员也想看他们的主机情况,就得需要创建相关账号,同时对账号进行资源授权,而细分领域后,告警量级明显会降低很多,此时业务人员也不可能时时刻刻盯着这个仪表盘,所以可以通过一些渠道告知业务人员,例如邮件、一些即时通信软件,本文采用飞书的方式演示。

通过什么渠道告知?

第一个要解决的问题是通过什么渠道来发送通知这件事情,本文确定以飞书的形式通知业务方相关告知内容。由于官方没有相对应的媒介,所以需要自行创建,本文不做媒介创建演示,具体可以参考我之前的文章。

创建的飞书媒介创建的飞书媒介

发送通知的本质就是动作

既然确定了用什么渠道来发送通知,那么怎么发送通知呢?发送通知本身就是一个动作,在 Zabbix 里也是动作(Actions)

触发器动作(Trigger actions)

点击创建一个动作,动作模块里有两个 tab,分别是动作和操作 动作部分有四块,红星的地方必须填写

进入触发器动作进入触发器动作
动作板块动作板块
多个条件才会触发计算类型多个条件才会触发计算类型
  1. name 字段自定义即可
  2. Type of calculation,关于这个只有在两个条件及以上的的时候才会触发,里面包含四个选项
  • And/Or:和与或同时存在,And 和 Or 的放置方法为同类型条件为 Or,非同类型为 And
  • And:所有条件必须满足
  • Or:满足任意条件即可
  • Custom expression:自定条件组合
A和D为触发器条件,所以为Or,其他为触发器级别和名称,所以为andA和D为触发器条件,所以为Or,其他为触发器级别和名称,所以为and
  1. Conditions,点击Add后,会弹出条件对话框,会有三个选项
  • Type:包含很多种类型,就不一一赘述了
  • Operator:包含与不包含
  • 根据Type可变
条件界面条件界面
条件类型条件类型

操作部分有6块,红星的地方必须填写

操作部分操作部分
  1. Default operation step duration,默认操作步骤的时间,动作内全局变量
  2. Operations,告警动作
  • Steps:第一个数字代表步骤,后面的数字代表此步骤重复次数,如果是1-10,就证明此步骤每间隔一小时执行此动作
  • Step duration:步骤持续时间,0代表永不过期
  • Send to user groups:发送到用户组
  • Send to users:发送到用户
  • Send only to :推送渠道
  • Custom message:自定义消息模板
  • Conditions:条件(不常用,只有一个条件,就是事件被标记)
  1. Recovery operations,恢复动作
  • Operation,动作内容
  • Send to user groups,发送到组
  • Send to users,发送到用户
  • Send only to,发送渠道
  • Custom message,自定义消息模板
  1. Update operations,更新动作,内容与恢复动作一致
  2. Pause operations for suppressed problems,暂停维护期间(被监控设备)的告警通知
  3. Notify about canceled escalations 取消通知

根据环境创建动作

本文的环境是创建一台主机,主机组为 Linux Servers,告警推送给 Admin 用户,根据上文浅析,判断条件只需要一个就够了,主机组为该组即可;动作详情仅修改 Send to users,Send only to 即可。

创建条件创建条件
创建动作创建动作

建立完成后,首页会出现动作的箭头,此时证明写的动作生效了,但是此时出现红色的箭头,点开查看原因为 No media defined for user,字面意思是用户没有定义媒介,言外之意是该用户没有该媒介的配置。所以需要进入到用户界面配置,需要配置的部分包括该用户可以通过飞书接受信息,测试用户就随便填写了,和应用无关(邮件与SMS除外),其他的字段分别是什么时间可以接受告警,接受的告警有哪些级别,启用状态

添加用户媒介配置添加用户媒介配置

调整完用户后,此时会发现依然会出现动作失败的提示,只不过内容变为 No message defined for media type,这个报错为消息模板未定义,即是通知内容模板未写,有两个地方可以填写内容模板,第一个是媒介里的消息模板,第二个为动作里的自定义消息模板,消息模板是支持变量的,具体可以参阅官方文档的宏,也可以参阅笔者的内容美化文章,这里不展开赘述了,至于区别就是媒介里的只需要创建一次,动作里的需要每一条都需要单独写,就这区别,两者任选其一,本文使用媒介里的消息模板

提示未定义消息模板提示未定义消息模板
媒介里的消息模板媒介里的消息模板
动作里的消息模板动作里的消息模板
媒介里自定消息模板效果图媒介里自定消息模板效果图

当出现下图时候,代表发送已经成功,飞书 APP 也接收到相关信息,恢复和更新动作同理配置,限于篇幅原因不再展开

写在最后

整个事件通知其实以通知到相关人员为逻辑展开,理解起来就没那么复杂,当然有很多细节得需要自己体会,包括后期的事件升级功能、高阶事件通知运用等等,技术本是以人为本,所以大家不理解的时候多想想背后的逻辑,自然简单的多。最后文章有不清晰的地方随时联系沟通,谢谢。

0 人点赞