Prometheus+Grafana打造Mysql监控平台
prometheus/node_exporter/mysqld_exporter都是由go语言编写,需要先安装GoLang环境
下载node_exporter(监控服务器的CPU、内存、存储使用情况)和mysqld_exporter放到Mysql服务器(被监控端)
- 需要为mysqld_exporter在Mysql数据库新建一个用户,并赋予相应权限
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'XXXXXXXX' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
-
配置mysql_exporter启动时连接mysql的用户名和密码
- 环境变量方式:
export DATA_SOURCE_NAME='user:password@(hostname:3306)/' ./mysqld_exporter <flags>
- 配置.my.cnf文件
[client] user=exporter password=exporter 然后启动mysqld_exporter mysqld_exporter -config.my-cnf=".my.cnf"
下载Prometheus放到监控端(或被监控端)。
- 配置文件prometheus.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
# 192.168.1.7为node_exporter所在服务器的IP;9100为node_exporter暴露的端口
- targets: ['192.168.1.7:9100']
labels:
#db1为实例名,以后在Grafana获取prometheus时,要配置prometheus所有服务器的host为db1
instance: db1
- job_name: mysql
static_configs:
# 192.168.1.7为mysqld_exporter所在服务器的IP;9100为mysqld_exporter暴露的端口
- targets: ['192.168.1.7:9104']
labels:
instance: db1
启动prometheus,并查看配置的Linux和Mysql节点状态是否为Up
下载Grafana,并按文档安装
下载Percona提供的Dashboards
如果grafana与prometheus不在一台服务器,需要指定prometheus的主机名(此例中应该为db1),access要选择proxy,表示由grafana处理请求,而不是直接请求prometheus。

正常情况下可以看见Mysql和System的仪表盘,如果显示不出来,请检查下面几个方面
- 检查Grafana和grafana-dashboards版本(grafana-4.2 匹配grafana-dashboards-1.3.2,不匹配当前最新版本1.15).
- Grafana使用grafana用户运行,所以需要检查/etc/grafana,/var/lib/grafana,/usr/grafana目录所有者和用户组是否是grafana
- 对于grafana 3.X版本,还需要做如下处理,参见[grafana-dashboards](https://github.com/percona/grafana-dashboards)
> sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/'
/usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js
> sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/'
/usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js
- grafana所有服务器是否配置prometheus所有服务器的IP与Host映射,如上的Prometheus的配置,host应该配置成db1



作者:
单行线的旋律(单行线的旋律's Blog on 博客园)
出处:http://www.cnblogs.com/mycodingworld/
本作品由单行线的旋律 创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请 给我留言。
出处:http://www.cnblogs.com/mycodingworld/
本作品由单行线的旋律 创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请 给我留言。
如果喜欢我的文章,欢迎关注我的公众号;分享技术、生活故事,做一个有故事的技术人

【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 2025,回顾出走的 10 年
· 【保姆级教程】windows 安装 docker 全流程
· 分享 3 款基于 .NET 开源且免费的远程桌面工具
· 基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
· 由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端