1298 字
6 分钟
07-Zabbix-Triggers-触发器
Zabbix 6.4 分布式企业级性能监控平台
Zabbix Triggers 触发器官网:https://www.zabbix.com/cn
一、实验环境
| 节点 | 角色 | IP 地址 | 操作系统: | 硬件规格 |
|---|---|---|---|---|
| rocky-9-16 | MySQL 数据库(版本:8.0) 加装:Zabbix Agent 客户端代理 | 192.168.168.16/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
| rocky-9-17 | Nginx + PHP Web 前端 加装:Zabbix Agent 客户端代理 | 192.168.168.17/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
| rocky-9-18 | Zabbix Server 核心服务(版本:6.4) | 192.168.168.18/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
| rocky-9-19 | 被监控主机 安装:Zabbix Agent 客户端代理 | 192.168.168.19/24 | Rocky Linux 9 | 1 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/functions1. 了解:什么是<触发器>?
★ <触发器>就是:结合<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 trigger3. 演示创建:<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(声明)## 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 个并发数## 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 压力测试## 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-触发器/