Skip to main content

4.触发器、动作和报警机制

报警机制

当监控的参数超过设定值时,报警提醒。

  • 邮件:自带
  • 即时消息:自带
  • 短信:需要购买电信运营商短信包
  • 微信:需要安装插件

自定义的监控项默认不会自动报警

首页也不会提示错误

需要配置触发器与报警动作才能自动报警

触发器(trigger)

定义

  • 表达式,如内存不足300M,用户超过30个等
  • 当触发条件发生后,会导致一个触发事件
  • 触发事件会执行某个动作

步骤:

  • 创建触发器
  • 编写触发器表达式

创建触发器

“Configuration > Templates > 选择对应模板 > 点击Triggers > Create trigger”

1705730967323

编写触发器表达式

触发器表达式定义

Expression表达式:触发异常的条件

{<server>:<key>.<function>(<parameter)}<operator>
<constant>
{主机:key.函数名(参数)}<表达式>常数
  • server:服务器名
  • key:命令
  • function:函数名,是zabbix内置的命令
  • 表达式:比较符号,如 > , < , =
  • 常数:预设值,超过该值会报警

表达式示例:

  • 如果web1主机最新的CPU平均负载值大于5,则触发器状态Porblem

    {web1:system.cpu.load[all,avg1].last(0)}>5	#0为最新数据
  • 根分区,最近5分钟的最大容量小于10G,则状态进入Problem

    {vfs.fs.size[/,free].max(5m)}<10G		#5m为最近5分钟
  • 最新一次校验/etc/passwd如果与上一次有变化,则状态进入Problem

    {vfs.file.cksum[/etc/passwd].diff(0)}>0		#0为最新数据

函数简介

  • 大多数函数使用秒作为参数,使用#代表不同含义
  • avg,count,last,min,max 函数支持额外的第二参数 time shift(事件偏移量,或间隔(秒))
  • 这个参数允许从过去一段时间内引用数据
函数内容描述
sum(600)600秒内所有值的总和
sum(#5)最后5个值的总和
last(20)最后20秒的值
last(#5)倒数第5个值
avg(1h,1d)一天前的1小时的平均值

添加表达式

  • 监控项选择(Item):count_line_passwd_item
  • 功能(Function):选last()最新数据
  • 间隔(秒)(Time shift):间隔多少秒
  • 结果(N):需要大于30

1705731888909

表达式添加完成后,点击添加

1705732110352

触发器添加完成,如下图

1705732149301

验证是否能够正常触发报警

#在主机上添加以下用户
sudo useradd test001
sudo useradd test0012
sudo useradd test0013
sudo useradd test0014
sudo useradd test0015
sudo useradd test0016
sudo useradd test00151
sudo useradd test00161

#测试完成后记得删除
sudo userdel -r test001 #-r:删除家目录和mail
sudo userdel -r test0012
sudo userdel -r test0013
sudo userdel -r test0014
sudo userdel -r test0015
sudo userdel -r test0016
sudo userdel -r test00151
sudo userdel -r test00161

添加完成后能够正常报警,没问题。

1705732511844

删除用户后,显示已解决

1705732853259

动作(action)

创建动作步骤

  • 配置邮件服务
    • 安装邮件服务和收发邮箱
  • 设置邮件服务器
    • zabbix web 界面配置邮件服务器

配置邮件服务

安装邮件服务

sudo dnf install -y sendmail
#启动服务,并设置自启
sudo systemctl start sendmail && sudo systemctl enable sendmail
sudo systemctl status sendmail

使用环境rockylinux9.2中没有mailx或mail的包,所以改用sendmail

测试发邮件

echo -e "Subject: 测试邮件\nFrom: fams_itoper01@localhost\n\nHello, 这是一封测试邮件。" | sendmail -v fams_itoper01@localhost

测试接收邮件

cd /var/spool/		#会提示有新邮件

如果邮件无法发送成功,可能需要添加主机解析记录

web端设置邮件服务器

"Administartion > Media Type > 选择Email邮件"

1705735804497

设置邮件服务器信息

  • SMTP服务器:localhost
  • SMTP服务器端口:25
  • SMTP HELO:server5,随便填
  • SMTP电邮:root@localhost

1705735893904

邮件服务器添加成功

1705735989956

关联邮件服务和Zabbix用户

“管理 > 用户 > 选择相应用户 > 报警媒介 > 点击添加”

1705736144673

配置报警媒介

  • 类型:Email
  • 收件人:[email protected]
  • 当启用时:接收邮件的事件,周一到周日,0点到24点这个时间段接收邮件

1705736852354

添加邮件时,显示root@localhost无效的邮件地址,所以改成[email protected]

原因是 Zabbix 对电子邮件地址有一些验证规则,要求提供一个有效的电子邮件格式。

添加完成后,点击"更新"即可。

1705737088806

创建Action

定义当触发器被触发时,执行什么样的Action

通过"Configuration > Actions > Create actions" 创建

1705737278159

配置Action

  • 条件:配置导致动作的触发器,选择,这里是账户数大于26

添加触发条件

1705737471661

1705737531874

配置操作

配置动作的具体操作行为(发送信息或执行远程命令)

  • 下图是无限次数发送邮件,60秒发送1次,发送给Admin用户,问题解决后停止发送
  • 可以自定义发送邮件的消息,消息中可以使用zabbix内置变量

1705737776450

1705738246788

动作添加完成

1705738407909

测试配置

  • 触发器被触发后执行动作
  • 查看是否收到邮件

发送失败了,尝试了网易邮箱配置,能够正常发送邮件,所以应该没问题。

1705739541887

Reference Links:

#培训视频

https://www.bilibili.com/video/BV1Mb4y1f7JT

#笔记参考

https://github.com/adampielak/zabbix-notes