用Grafana做SQL运维可视化,核心是通过对应Exporter采集MySQL/PG/SQL Server关键指标,经Prometheus存储后在Grafana建面板监控;需聚焦连接健康、查询性能、资源争用、缓存效率四类痛点指标,配置分级告警与下钻分析,并持续优化面板有效性及监控链路自身健康。

用Grafana做SQL运维数据可视化,核心是把数据库关键指标(如查询延迟、连接数、慢查询、QPS、锁等待、缓冲池命中率等)从MySQL、PostgreSQL或SQL Server等源头采集出来,通过时间序列数据库(如Prometheus)中转,再在Grafana中配置面板实现动态监控大盘。
数据采集层:选对Exporter是第一步
不同数据库需搭配对应Exporter,确保指标可被Prometheus抓取:
- MySQL推荐使用 mysqld_exporter,需创建专用监控用户并授权
PROCESS, REPLICATION CLIENT, SELECT等最小权限 - PostgreSQL用 postgres_exporter,注意配置
auto_discover_databases=true以自动纳管新库 - SQL Server建议用 sql-server-exporter(基于T-SQL查询),需启用SQL Server Agent并开放TCP端口
- 所有Exporter应部署在靠近数据库的网络环境中,避免跨机房采集引入延迟失真
Grafana面板设计:聚焦真实运维痛点
别堆砌图表,优先呈现影响服务可用性的指标:
- 连接健康度:活跃连接数趋势 + 等待连接超时告警阈值线(如max_connections × 85%)
-
查询性能瓶颈:P95响应时间 + 慢查询数量/分钟(配合
log_slow_queries=ON或pg_stat_statements) -
资源争用信号:InnoDB行锁等待总时长(MySQL)、
pg_locks阻塞链路(PG)、TempDB空间使用率(SQL Server) - 缓存效率:InnoDB缓冲池命中率(
告警联动:让大盘不止于“看”
在Grafana中配置Alert Rules,直接对接企业微信、钉钉或PagerDuty:
- 设置动态阈值,例如:“连续3个周期QPS下降超60%且错误率上升”触发降级检查
- 慢查询告警带上
digest_text(MySQL)或query(PG)字段,方便DBA快速定位问题SQL - 关键指标(如主从延迟 > 30s、连接数达上限)设为P1级,触发电话通知
- 所有告警规则需标注影响范围(实例名、集群名、业务线),避免误判和甩锅
持续优化:监控不是一锤子买卖
上线后要定期反查监控有效性:
- 每季度清理长期无变化的面板(如“磁盘IO等待队列长度”,SSD环境已意义不大)
- 新增业务模块上线时,同步在Grafana中添加对应schema级QPS、锁等待、索引扫描比例等维度
- 将高频人工排查动作沉淀为“一键下钻”链接——点击异常峰值,自动跳转到对应时间段的pt-query-digest报告或pgBadger分析页
- 用Grafana变量(如
$instance、$database)实现多实例统一模板,避免重复建图
不复杂但容易忽略:监控数据本身也要被监控——定期检查Exporter是否存活、Prometheus抓取成功率、Grafana面板数据延迟。一个“看似正常”的大盘,可能只是数据没传上来。










