数据库
监控 MySQL/PostgreSQL 查询性能并下钻慢…
适用于监控 MySQL/PostgreSQL 性能、诊断慢查询、为 RDS/Aurora/Cloud SQL/Azure/自建实例搭建查询级可观测性,并将数据库指标与 APM trace 关联。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
监控 MySQL/PostgreSQL 特定
解决思路
- 查阅官方文档:https://grafana.com/docs/grafana-cloud/monitor-applications/database-observability/ 获取最新配置说明。
- 确认目标实例属于支持范围:MySQL 支持 Self-managed、RDS MySQL、Aurora MySQL、Cloud SQL MySQL、Azure Database for MySQL;PostgreSQL 支持 Self-managed、RDS PostgreSQL、Aurora PostgreSQL、Cloud SQL PostgreSQL、Azure Database for PostgreSQL。
- PostgreSQL:在 postgresql.conf 中设置 shared_preload_libraries = 'pg_stat_statements',然后重启 PostgreSQL 以启用 pg_stat_statements。
- PostgreSQL:创建最小权限监控用户:CREATE USER grafana_monitoring WITH PASSWORD 'secret';
- PostgreSQL:授予 pg_monitor:GRANT pg_monitor TO grafana_monitoring;
- PostgreSQL:授予目标数据库连接权限:GRANT CONNECT ON DATABASE mydb TO grafana_monitoring;
- PostgreSQL:在每个被监控数据库上启用扩展:CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
- PostgreSQL:验证:SELECT count(*) FROM pg_stat_statements; 应返回 >=0 而不是报错;若提示 relation does not exist,说明扩展启用步骤未执行。
- PostgreSQL:从 references/alloy-config.md § PostgreSQL 添加 Alloy 配置块。
- PostgreSQL:重启 Alloy 并等待约 60s 进行首次抓取。
- PostgreSQL:在 Grafana Cloud → Database Observability 验证实例出现,且 db_query_total{db_instance="mydb"} 序列非空;若 2 分钟后仍为空,检查 Alloy 日志中的连接错误,再重新验证 pg_stat_statements 权限。
- MySQL:创建最小权限监控用户:CREATE USER 'grafana_monitoring'@'%' IDENTIFIED BY 'secret';
- MySQL:授予权限:GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'grafana_monitoring'@'%';
- MySQL:授予 performance_schema 查询权限:GRANT SELECT ON performance_schema.* TO 'grafana_monitoring'@'%';
- MySQL:执行 FLUSH PRIVILEGES;
- MySQL:验证 performance_schema 是否启用:SELECT @@performance_schema; 返回 1 表示启用;返回 0 则在 my.cnf 中设置 performance_schema=ON 并重启。
- MySQL:从 references/alloy-config.md § MySQL 添加 Alloy 配置块。
- MySQL:重启 Alloy,等待约 60s,在 Grafana Cloud → Database Observability 验证实例出现。
- 对受管数据库(RDS / Cloud SQL / Azure),通过参数组/flag 启用 pg_stat_statements(它已预装但禁用),然后在数据库层面重新创建扩展。
- 使用自动预置的 Query Performance dashboard:按总时间/调用次数/平均延迟查看 top queries、带参数的采样查询文本、可视化 explain plans、按 query digest 的 RED 指标。
- 使用 APM correlation:通过 db.statement / db.system / db.name OTel 属性,从慢服务延迟 span 下钻到具体慢 SQL(见 references/queries-alerts.md § Trace correlation)。
- 配置对查询延迟、错误率、连接池饱和的告警;完整告警 YAML 见 references/queries-alerts.md § Alert rules。
- 参考 references/alloy-config.md 获取完整的 Alloy database_observability.postgres / database_observability.mysql 配置块和 collector 参考(pg_stat_statements、query_samples、schema_details、explain_plans)。
- 参考 references/queries-alerts.md 获取关键 PromQL 查询、告警规则 YAML 和 trace-correlation 设置。
适用边界 · 注意事项
- 未使用 Grafana Cloud 和 Grafana Alloy 的环境不适用。
- 无法重启数据库、修改参数组/flag,或不能创建监控用户并授予 pg_monitor、PROCESS、REPLICATION CLIENT 等权限时不适用。
- 目标数据库不是 MySQL 或 PostgreSQL 时不适用。