1298 字
6 分钟
07-Zabbix-Triggers-触发器

Zabbix 6.4 分布式企业级性能监控平台#

Zabbix Triggers 触发器
官网:https://www.zabbix.com/cn

一、实验环境#

节点角色IP 地址操作系统:硬件规格
rocky-9-16MySQL 数据库(版本:8.0) 加装:Zabbix Agent 客户端代理192.168.168.16/24Rocky Linux 91 vCPU、2GB 内存
rocky-9-17Nginx + PHP Web 前端 加装:Zabbix Agent 客户端代理192.168.168.17/24Rocky Linux 91 vCPU、2GB 内存
rocky-9-18Zabbix Server 核心服务(版本:6.4)192.168.168.18/24Rocky Linux 91 vCPU、2GB 内存
rocky-9-19被监控主机 安装:Zabbix Agent 客户端代理192.168.168.19/24Rocky Linux 91 vCPU、2GB 内存

二、了解Triggers 触发器#

数据可视化功能可以有助于我们运维工作人员预判性能变化趋势,但是运维工作人员不可能时时刻刻的守在监视屏傍,同时面对大量的性能指标,也不可能将它们全部图形化展现出来,当性能指标数据出现异常时,我们需要有一种机制来及时通知相关的运维工作人员,从而得到及时的处理,保障整个系统的正常运行。
Zabbix Trigger 触发器就是这样的一种预警机制,它借助 item 监控项获取性能指标数据,然后基于设定的预警条件,在后台予以监视,一旦预警条件达成,就会自动产生一个 even 事件,进而结合相关的预警动作,及时通知运维工作人员。
★ <触发器>官方指南 :https://www.zabbix.com/documentation/6.0/en/manual/config/triggers
★ <触发器 表达式>官方指南:https://www.zabbix.com/documentation/6.0/en/manual/config/triggers/expression
★ <触发器 函数>官方指南 :https://www.zabbix.com/documentation/6.0/en/manual/appendix/functions

1. 了解:什么是<触发器>?#

★ <触发器>就是:结合<item 监控项获取性能指标数据>来计算<条件表达式>,一旦满足<指定阈值>,就产生<问题事件>或者<OK 事件>的<事件管理机制>。
★ <触发器>的基本要素是:
♦ item 监控项
♦ 条件表达式
♦ event 事件

2. 了解:<触发器>计算<条件表达式>的<时机>#

  • ★ 时机1:如果<触发器>接收到了一个<新的采样值>,就会立即重新计算<逻辑表达式>。
  • ★ 时机2:如果<触发器>的<逻辑表达式>中使用了<时间函数>,就会每隔30秒重新计算<逻辑表达式>。 ♦ 时间函数有:nodata(), date(), dayofmonth(), dayofweek(), time(), now()。
  • ★ 注意1:以上两个<时机>,均会促使<触发器>重新计算<逻辑表达式>,不会彼此抵消。
  • ★ 注意2:<触发器>仅基于<时点性的历史数据>进行评估;从不考虑<平均性的趋势数据>。

三、创建Tigger 触发器#

1. 前提:拥有Items 监控项(略 …)#

2. 方法:#

★ Web 控制台
Configuration
Hosts
server01
Triggers
右上角:Create trigger

3. 演示创建:<httpd 的 CPU/Memory 资源占用>的<触发器>#

★ 示例说明:实现<httpd 服务进程>的<CPU 平均占用率>和<内存合计占用率>的事件预警
(1) 首先:创建<相应的 Item 监控项>
Item 监控项名称 Key 监控键
HTTPD 进程 CPU 占比 ----> proc.cpu.util[httpd,,,,avg1] ## Key 内置键:获取<httpd 进程>的<CPU 平均占用率>
HTTPD 进程 MEM 占比 ----> proc.mem[httpd,,sum,,pmem] ## Key 内置键:获取<httpd 进程>的<内存合计占用率>
(2) 然后:创建<触发器>
♦ 名称:httpd Process Resource occupation for trigger01
♦ 问题表达式
❃ <CPU 平均占用率>大于 40% ┐
或者 ├ 则认为:出现问题,就生成<PROBLEM 问题事件>
<RAM 合计占用率>大于 70% ┘
❃ 创建:问题表达式
last(/rocky-9-19/proc.cpu.util[httpd,,,,avg1])>40
or
last(/rocky-9-19/proc.mem[httpd,,sum,,pmem])>70
## 备注:
## last()函数:用于获取<样本数据>中的<最近的样本值>
♦ 问题恢复表达式
❃ <CPU 平均占用率>小于 20% ┐
并且 ├ 则认为:问题解除,就生成<OK 正常事件>;
<RAM 合计占用率>小于 40% ┘
❃ 创建:问题恢复表达式
last(/rocky-9-19/proc.cpu.util[httpd,,,,avg1])<20
and
last(/rocky-9-19/proc.mem[httpd,,sum,,pmem])<40
## 备注:
## last()函数:用于获取<样本数据>中的<最近的样本值>
♦ 针对<问题事件生成模式>栏,选择:不重复生成<PROBLEM 问题事件>;
♦ 针对<事件成功关闭>栏,选择:所有问题均解决
♦ 针对<允许手动关闭>栏,选择:禁止手动关闭
##
## 1. 首先:创建<相应的 Item 监控项>
## Item 监控项名称 Key 监控键
## HTTPD 进程 CPU 占比 ----> proc.cpu.util[httpd,,,,avg1] 数据类型:Numeric(float) 小数 ◀
## HTTPD 进程 MEM 占比 ----> proc.mem[httpd,,sum,,pmem] 数据类型:Numeric(float) 小数 ◀
##

##
## 2. 然后:创建<触发器>
##

4. 压力测试:#

##
## (1) rocky-9-19(192.168.168.19)安装:HTTPD(声明)
##
Terminal window
yum install -y httpd mod_ssl
systemctl enable httpd
systemctl start httpd
firewall-cmd --permanent --zone=public --add-port=80/tcp --add-port=443/tcp
firewall-cmd --reload
echo "This is a HTTPD Server01 indet.html Web Page" > /var/www/html/index.html
## 实时监视:httpd 进程的 cpu 占用率 和 men 内存占用量
watch -n 1 "ps h -C httpd -o %cpu,%mem | awk '{a=a+\$1;b=b+\$2} END{print a\"%\",\"|\",b\"%\"}'"
##
## (2) rocky-9-19(192.168.168.19)HTTPD 执行 ab 压力测试:发出 1000 个请求,一次可以同时发送 1000 个并发数
##
Terminal window
rpm -qa httpd-tools || yum install -y httpd-tools
while true; do
ab -n 1000 -c 1000 http://192.168.168.19/index.html
done
##
## (3) Zabbix Web 前端仪表盘:查看<生成 PROBLEM 问题事件>
##
♦ Web 控制台 → Problems

##
## (4) server02 HTTPD 终止 ab 压力测试
##
Terminal window
Ctrl + z ## 终止:while 循环
pkill -9 ab ## 终止:ab 进程
##
## (5) Zabbix Web 前端仪表盘:查看<关闭 PROBLEM 问题事件>
##
♦ Web 控制台 → Problems

07-Zabbix-Triggers-触发器
https://fuwari.vercel.app/posts/zabbix监控/07-zabbix-triggers-触发器/
作者
肥猫少杰
发布于
2026-06-03
许可协议
CC BY-NC-SA 4.0