从零搭建Prometheus+Grafana:MySQL数据库监控实战指南

发布时间:2026/5/20 8:47:16

从零搭建Prometheus+Grafana:MySQL数据库监控实战指南 1. 环境准备与组件介绍监控系统是现代IT运维中不可或缺的一环。想象一下如果你的MySQL数据库突然崩溃而你却毫不知情等到业务部门投诉才发现问题那场景得多尴尬。PrometheusGrafana的组合就像给你的数据库装上了智能手环7x24小时监测它的心跳、血压等关键指标。Prometheus本质上是个数据收集狂魔它会定期从各个目标比如MySQL抓取监控数据存储在自己的时间序列数据库中。你可以把它理解成一个特别擅长记录历史数据的管家能告诉你数据库在昨天下午3点的CPU使用率是多少这类问题。Grafana则是数据可视化专家它能把Prometheus收集的枯燥数字变成漂亮的折线图、仪表盘。就像把体检报告单变成动态的健康趋势图让运维人员一眼就能看出问题。至于MySQL Exporter它是个翻译官专门把MySQL的内部状态信息比如连接数、查询次数转换成Prometheus能理解的格式。这就像把医生的专业术语翻译成普通人能听懂的健康建议。2. Prometheus安装与配置2.1 二进制安装Linux环境先到官网下载最新版本当前稳定版是2.45.2wget https://github.com/prometheus/prometheus/releases/download/v2.45.2/prometheus-2.45.2.linux-amd64.tar.gz解压后你会看到这些关键文件prometheus主程序prometheus.yml核心配置文件data/默认数据存储目录建议单独挂载大容量磁盘配置文件就像烹饪食谱告诉Prometheus该监控什么。默认配置已经包含了对自身的监控global: scrape_interval: 15s # 每15秒抓一次数据 scrape_configs: - job_name: prometheus # 监控自己 static_configs: - targets: [localhost:9090]2.2 系统服务化部署生产环境推荐用systemd管理服务创建/etc/systemd/system/prometheus.service[Unit] DescriptionPrometheus Monitoring System [Service] Userprometheus ExecStart/usr/local/bin/prometheus/prometheus \ --config.file/etc/prometheus/prometheus.yml \ --storage.tsdb.path/data/prometheus # 建议修改为大数据盘目录 [Install] WantedBymulti-user.target启动后访问http://服务器IP:9090如果能看见Web界面说明安装成功。我第一次配置时忘了开防火墙端口排查了半天才发现问题你们可别犯同样的错误。3. MySQL Exporter部署3.1 创建监控专用账户千万别用root账号最小权限原则是运维的黄金法则CREATE USER exporter% IDENTIFIED BY ComplexPassword123!; GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO exporter%;这个账号只需要PROCESS查看线程状态REPLICATION CLIENT查看主从状态SELECT查询性能Schema3.2 安装Exporter下载地址注意版本匹配wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz配置文件.my.cnf要放在安全位置[client] userexporter passwordComplexPassword123! host127.0.0.1 port3306启动命令示例生产环境建议用systemd./mysqld_exporter \ --config.my-cnf/path/to/.my.cnf \ --collect.global_status \ --collect.info_schema.innodb_metrics遇到连接问题先手动测试mysql -u exporter -pComplexPassword123! -h 127.0.0.1 -e SHOW STATUS4. Grafana安装与数据源配置4.1 快速安装CentOS示例sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.2.3-1.x86_64.rpm关键目录说明/etc/grafana/grafana.ini主配置文件/var/lib/grafana数据存储目录/usr/share/grafana/public前端资源4.2 连接Prometheus登录http://服务器IP:3000默认admin/admin左侧齿轮图标 → Data Sources → Add data source选择Prometheus类型URL填写http://prometheus_ip:9090点击Save Test看到绿色提示我曾经遇到过Grafana显示No Data的问题后来发现是Prometheus的防火墙规则没配置血泪教训啊5. 仪表盘配置实战5.1 导入现成模板Grafana官方市场有现成的MySQL仪表盘访问 https://grafana.com/grafana/dashboards搜索MySQL选择评分高的如ID 11323在Grafana界面点击 → Import → 输入ID5.2 关键指标解读连接数监控mysql_global_status_threads_connected突然飙升可能意味着连接泄漏查询性能mysql_global_status_questions配合rate()函数看QPS趋势InnoDB缓冲池mysql_global_status_innodb_buffer_pool_read_requests命中率低于90%需要考虑扩容5.3 自定义告警规则在Prometheus的rules目录添加mysql_rules.ymlgroups: - name: mysql-alerts rules: - alert: HighThreadsRunning expr: mysql_global_status_threads_running 100 for: 5m labels: severity: warning annotations: summary: High MySQL threads running ({{ $value }})6. 生产环境优化建议6.1 性能调优Prometheus存储调整--storage.tsdb.retention.time30d控制数据保留时间抓取频率关键指标可以缩短到5s非核心指标延长到30s资源隔离为Exporter配置--web.listen-address内网IP:端口6.2 高可用方案Prometheus运行两个实例负载均衡Grafana配置相同的数据库后端Exporter多实例部署服务发现6.3 安全加固为Grafana配置HTTPS限制Prometheus API的访问IPExporter使用专用VLAN记得定期检查监控系统本身是否健康——我曾经遇到过监控系统挂了导致没人发现业务故障的尴尬情况。现在我的做法是用另一个独立的监控系统来监控主监控系统就像俄罗斯套娃一样。

相关新闻