明白了,阿杰,你想在 Zabbix 中监控 MySQL 数据库。下面我给你整理一份完整指南,包括 MySQL 配置、Zabbix Agent 配置、模板应用和常用指标,适合生产环境使用。


🖥️ Zabbix 监控 MySQL 完整指南


一、前置条件

  1. MySQL
    • 已安装 MySQL 服务
    • 能够用一个专门的监控用户访问 performance_schemainformation_schema
    • 建议 MySQL ≥ 5.7
  2. Zabbix
    • Zabbix Server 已部署
    • Zabbix Agent 安装在 MySQL 服务器上或使用远程监控
  3. 网络
    • 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 执行 UserParameterzabbix_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 主机

  1. Zabbix 前端 → Configuration → Hosts → Create Host
    • Hostname:mysql-server
    • Groups:Database 或自定义
    • Agent Interface:MySQL 服务器 IP
  2. 链接模板
    • Templates → 添加 Template DB MySQL(官方或自定义模板)
  3. 测试
    • Monitoring → Latest Data
    • 检查指标是否能正常采集

五、常用监控指标

指标描述
MySQL ping数据库存活检查
Uptime数据库运行时间
Threads_connected当前连接数
Threads_running活跃线程数
Questions查询总数
Slow_queries慢查询数
Bytes_sent / Bytes_received网络流量
Innodb_buffer_pool_size / Hit RateInnoDB 缓冲区使用率
Queries per Second (QPS)每秒查询数

六、可视化与告警

  1. 图表
    • Dashboard → Graph
    • 常用图表:
      • Threads_connected / Threads_running
      • Slow_queries 趋势
      • QPS / TPS
  2. 告警触发器
    • 示例: Trigger: Threads_connected > 500 Expression: {mysql-server:mysql.threads_connected.last()}>500 Severity: High
    • 支持邮件、钉钉、微信告警

七、优化建议

  1. 安全
    • 使用专用监控用户,不使用 root
    • 避免暴露 MySQL 端口到公网
  2. 性能
    • 避免采集过于频繁(默认 60s)
    • 对慢查询、缓冲池使用率设置阈值报警
  3. 高可用
    • 集群或主从模式,监控每个节点
    • 结合 Zabbix Trigger 检测主从延迟