Mysql 触发器监控项
type
status
date
slug
summary
tags
category
icon
password
📊 监控项分类说明
1. 连接与会话
MySQL.Connections:总连接数
MySQL.max-connections:最大连接数
MySQL.Max-used-connections:历史最大使用连接数
MySQL.Aborted-clients:异常终止的客户端连接
MySQL.Aborted-connects:失败连接尝试
2. 查询性能
MySQL.Questions:总查询数
MySQL.Com-select:SELECT 语句数
MySQL.Com-insert:INSERT 语句数
MySQL.Com-update:UPDATE 语句数
MySQL.Com-delete:DELETE 语句数
MySQL.Slow-queries:慢查询数
3. 缓存命中率相关
查询缓存
MySQL.Qcache-hits:查询缓存命中数
MySQL.Qcache-inserts:查询缓存插入数
MySQL.Qcache-lowmem-prunes:因内存不足被清除的缓存数
键缓存(MyISAM)
MySQL.Key-read-requests:键缓存读取请求
MySQL.Key-reads:从磁盘读取键的次数
MySQL.Key-write-requests:键缓存写入请求
MySQL.Key-writes:键写入磁盘次数
4. 临时表与磁盘 I/O
MySQL.Created-tmp-tables:创建的临时表数
MySQL.Created-tmp-disk-tables:磁盘临时表数
MySQL.Created-tmp-files:临时文件数
5. InnoDB 状态
MySQL.innodb-buffer-pool-size:缓冲池大小
MySQL.innodb-buffer-pool-pages-data:缓冲池中有数据的页数
MySQL.innodb-buffer-pool-pages-free:空闲页数
MySQL.innodb-row-lock-waits:行锁等待次数
MySQL.innodb-row-lock-time:行锁等待时间(毫秒)
6. 复制状态(主从)
MySQL.slave-running:从库是否运行(0/1)
MySQL.slave-lag:主从延迟(秒)
MySQL.Slave-retried-transactions:从库重试事务数
UserParameter /etc/zabbix/zabbix_agentd.conf 配置
配置分析
1. 基础信息
👉 统计
mysql.user 表中的用户数量,用于监控数据库中账户的变化(比如异常新增账号)。👉 通用操作计数器,取
SHOW GLOBAL STATUS 里的 Com_xxx,比如:mysql.operation.number[select]→Com_select
mysql.operation.number[insert]→Com_insert
可统计不同 SQL 类型的执行次数。
👉 获取 MySQL 版本号。Zabbix 中常用于 资产管理和兼容性检查。
2. 连接情况
👉 当前活动连接数。监控数据库连接压力。
👉 MySQL 最大连接数上限。配合
threads_connected 计算 连接使用率。3. InnoDB Buffer Pool
👉 InnoDB 缓冲池大小(内存分配),关键参数,决定性能上限。
👉 缓冲池总页数。
👉 已使用的数据页数。配合 total 可以算 使用率。
👉 从磁盘读取次数。高说明 缓冲池不足。
👉 缓冲池命中读取次数。配合 reads 计算 命中率:
4. 临时表
👉 内存临时表创建次数。
👉 磁盘临时表创建次数(慢)。
⚠️ 如果这个值比 tmp_tables 高很多,说明 SQL 语句或 tmp_table_size 配置需要优化。
5. 打开文件数
👉 当前打开文件数量。
👉 系统允许的最大文件数限制。配合
open_files 判断是否逼近上限。6. 表缓存
👉 当前已打开的表数量。
👉 MySQL 表缓存大小上限。配合 open_tables 判断是否不足。
总结
这份配置主要覆盖了:
- 连接情况(threads_connected, max_connections)
- InnoDB 缓冲池效率(大小、页数、命中率)
- 临时表情况(内存/磁盘临时表比例)
- 资源使用率(文件句柄数、表缓存使用情况)
- 操作计数器(insert/select/update/delete 执行次数)
- 安全性(用户数量变化)
⚡ 搭配 Zabbix 的 触发器阈值,就能构成一套完整的 MySQL 健康监控体系。
Zabbix 触发器建议表
1️⃣ 连接相关
监控项 | Key | 类型 | 建议触发条件 | 说明 |
活动连接数 | mysql.threads_connected | 数值 | > 80% max_connections | 当活动连接数接近最大连接数时告警 |
最大连接数 | mysql.max_connections | 数值 | — | 配置参考,触发器通常用来计算连接使用率 |
触发器示例(连接使用率)
触发告警:“连接使用率超过80%”。
2️⃣ InnoDB Buffer Pool
监控项 | Key | 类型 | 建议触发条件 | 说明 |
缓冲池使用率 | mysql.innodb_buffer_pool_pages_data / mysql.innodb_buffer_pool_pages_total | 数值比率 | > 90% | 高使用率说明需要考虑扩容 |
Buffer Pool 命中率 | (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) | 计算项 | < 90% | 命中率低表示查询频繁落盘,需优化 SQL 或增大 buffer_pool |
触发器示例(命中率低)
触发告警:“Buffer Pool 命中率 < 90%”。
3️⃣ 临时表
监控项 | Key | 类型 | 建议触发条件 | 说明 |
内存临时表 | mysql.created_tmp_tables | 数值 | 短时间内急速增加 | 高频创建临时表可能导致性能下降 |
磁盘临时表 | mysql.created_tmp_disk_tables | 数值 | > 内存临时表比例 10% | 磁盘临时表多说明 SQL 或 tmp_table_size 配置不足 |
触发器示例
触发告警:“磁盘临时表比例超过10%”。
4️⃣ 文件句柄 / 表缓存
监控项 | Key | 类型 | 建议触发条件 | 说明 |
打开文件数 | mysql.open_files | 数值 | > 80% open_files_limit | 文件句柄逼近上限时告警 |
表缓存使用率 | mysql.open_tables / mysql.table_open_cache | 数值比率 | > 90% | 表缓存不足可能导致频繁打开/关闭表 |
触发器示例
触发告警:“文件句柄使用率超过80%”。
触发告警:“表缓存使用率超过90%”。
5️⃣ 用户数量 & 操作统计
监控项 | Key | 类型 | 建议触发条件 | 说明 |
MySQL 用户数 | mysql.number | 数值 | 突然增加 | 防止异常账号创建 |
SQL 操作次数 | `mysql.operation.number[select | insert | update | delete]` |
💡 总结建议
- 连接和 Buffer Pool 是核心健康指标,优先配置触发器。
- 临时表和磁盘落盘率 是效率指标,可帮助发现 SQL 优化机会。
- 文件句柄 / 表缓存 是资源使用指标,防止系统瓶颈。
- 用户数量 & SQL 操作计数 是安全/业务指标,可选报警。
Loading...