MySQL客户端本身不提供监控告警功能,它只是用于连接和操作数据库的工具。要实现监控告警,需要配合外部监控系统或使用专门的数据库监控工具。以下是几种常见的配置方法。
使用Prometheus + Grafana + MySQL Exporter
这是目前最主流的MySQL监控方案之一,适合生产环境。
安装MySQL Exporter:下载并运行MySQL Exporter,它会从MySQL客户端或服务端收集指标数据,并暴露给Prometheus抓取。 配置Prometheus:在prometheus.yml中添加MySQL Exporter的采集地址,例如: - targets: ['localhost:9104'] 部署Grafana:连接Prometheus作为数据源,导入MySQL监控面板(如ID为7362的Dashboard)。 设置告警规则:在Prometheus中定义告警条件,比如连接数超过阈值、慢查询增多等,通过Alertmanager发送邮件或Webhook通知。使用Zabbix进行监控
Zabbix支持对MySQL数据库的深度监控。
在Zabbix Server或Proxy上安装MySQL插件或脚本。 确保MySQL用户有权限执行SHOW STATUS、SHOW VARIABLES等命令。 配置Zabbix Agent或使用Template DB MySQL模板自动发现指标。 设置触发器,如主从延迟大于60秒、线程缓存命中率低等。 绑定告警媒介,通过微信、钉钉或邮件发送通知。使用Percona Monitoring and Management (PMM)
PMM是Percona推出的开源MySQL监控平台,集成度高,部署简单。
下载并启动PMM Server(可通过Docker运行)。 在数据库服务器上安装PMM Client。 使用pmm-admin add mysql命令添加MySQL实例。 PMM自动采集性能指标、慢查询日志、QAN分析等。 在Web界面设置告警规则,支持与Alertmanager集成。自定义脚本+定时任务
适用于轻量级场景,可快速实现基础告警。
编写Shell或Python脚本,通过MySQL客户端执行SQL检查状态,如: mysql -h host -u user -p -e "SHOW STATUS LIKE 'Threads_connected';" 判断返回值是否超过阈值。 结合crontab每分钟执行一次。 触发告警时调用邮件命令或调用企业微信/钉钉机器人API发送消息。基本上就这些常用方式。选择哪种方案取决于你的环境复杂度和运维能力。Prometheus和PMM适合长期维护,脚本方案适合临时应急。关键是确保监控项覆盖连接数、慢查询、主从同步、锁等待等核心指标。
