明白了,阿杰,你想在 Zabbix 中监控 MySQL 数据库。下面我给你整理一份完整指南,包括 MySQL 配置、Zabbix Agent 配置、模板应用和常用指标,适合生产环境使用。
🖥️ Zabbix 监控 MySQL 完整指南
一、前置条件
- MySQL
- 已安装 MySQL 服务
- 能够用一个专门的监控用户访问
performance_schema
或information_schema
- 建议 MySQL ≥ 5.7
- Zabbix
- Zabbix Server 已部署
- Zabbix Agent 安装在 MySQL 服务器上或使用远程监控
- 网络
- Zabbix Server 可以访问 MySQL 端口(默认 3306)
- MySQL 用户有监控权限(
SHOW STATUS
等)
二、MySQL 配置
1️⃣ 创建监控用户
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'yourpassword';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'zabbix'@'%';
FLUSH PRIVILEGES;
权限说明:
PROCESS
:查看线程和状态REPLICATION CLIENT
:查看主从状态SELECT
:读取performance_schema
/information_schema
2️⃣ 配置远程访问(可选)
- 修改
my.cnf
:
[mysqld]
bind-address = 0.0.0.0
- 重启 MySQL:
sudo systemctl restart mysql
三、Zabbix Agent 配置
1️⃣ 安装 Zabbix Agent
Ubuntu 示例:
sudo apt install zabbix-agent
2️⃣ 配置 Agent
编辑 /etc/zabbix/zabbix_agentd.conf
:
Server=ZABBIX_SERVER_IP
ServerActive=ZABBIX_SERVER_IP
Hostname=your_mysql_server
Include=/etc/zabbix/zabbix_agentd.d/*.conf
3️⃣ 配置 MySQL 监控脚本
方法一:使用官方模板
- Zabbix 官方提供 Template DB MySQL
- 通过
Zabbix agent
执行UserParameter
或zabbix_mysql
脚本查询状态
方法二:UserParameter 示例
在 /etc/zabbix/zabbix_agentd.d/mysql.conf
中添加:
UserParameter=mysql.ping,mysqladmin -uzabbix -pyourpassword ping | grep -c alive
UserParameter=mysql.uptime,mysql -uzabbix -pyourpassword -e "SHOW GLOBAL STATUS LIKE 'Uptime';" | awk '{print $2}'
UserParameter=mysql.threads_connected,mysql -uzabbix -pyourpassword -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';" | awk '{print $2}'
UserParameter=mysql.questions,mysql -uzabbix -pyourpassword -e "SHOW GLOBAL STATUS LIKE 'Questions';" | awk '{print $2}'
UserParameter=mysql.slow_queries,mysql -uzabbix -pyourpassword -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';" | awk '{print $2}'
重启 Zabbix Agent:
sudo systemctl restart zabbix-agent
四、在 Zabbix 前端添加 MySQL 主机
- Zabbix 前端 → Configuration → Hosts → Create Host
- Hostname:
mysql-server
- Groups:
Database
或自定义 - Agent Interface:MySQL 服务器 IP
- Hostname:
- 链接模板
- Templates → 添加
Template DB MySQL
(官方或自定义模板)
- Templates → 添加
- 测试
- Monitoring → Latest Data
- 检查指标是否能正常采集
五、常用监控指标
指标 | 描述 |
---|---|
MySQL ping | 数据库存活检查 |
Uptime | 数据库运行时间 |
Threads_connected | 当前连接数 |
Threads_running | 活跃线程数 |
Questions | 查询总数 |
Slow_queries | 慢查询数 |
Bytes_sent / Bytes_received | 网络流量 |
Innodb_buffer_pool_size / Hit Rate | InnoDB 缓冲区使用率 |
Queries per Second (QPS) | 每秒查询数 |
六、可视化与告警
- 图表
- Dashboard → Graph
- 常用图表:
- Threads_connected / Threads_running
- Slow_queries 趋势
- QPS / TPS
- 告警触发器
- 示例:
Trigger: Threads_connected > 500 Expression: {mysql-server:mysql.threads_connected.last()}>500 Severity: High
- 支持邮件、钉钉、微信告警
- 示例:
七、优化建议
- 安全
- 使用专用监控用户,不使用 root
- 避免暴露 MySQL 端口到公网
- 性能
- 避免采集过于频繁(默认 60s)
- 对慢查询、缓冲池使用率设置阈值报警
- 高可用
- 集群或主从模式,监控每个节点
- 结合 Zabbix Trigger 检测主从延迟
发表回复