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 判断是否不足。

总结

这份配置主要覆盖了:
  1. 连接情况(threads_connected, max_connections)
  1. InnoDB 缓冲池效率(大小、页数、命中率)
  1. 临时表情况(内存/磁盘临时表比例)
  1. 资源使用率(文件句柄数、表缓存使用情况)
  1. 操作计数器(insert/select/update/delete 执行次数)
  1. 安全性(用户数量变化)
⚡ 搭配 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]`

💡 总结建议
  1. 连接和 Buffer Pool 是核心健康指标,优先配置触发器。
  1. 临时表和磁盘落盘率 是效率指标,可帮助发现 SQL 优化机会。
  1. 文件句柄 / 表缓存 是资源使用指标,防止系统瓶颈。
  1. 用户数量 & SQL 操作计数 是安全/业务指标,可选报警。

Loading...