Coroot 团队很高兴地宣布 coroot-pg-agent (https://github.com/coroot/coroot-pg-agent) 发布 -- 这是一款开源(Apache 2.0 许可)的 Postgres Prometheus 导出器,专注于查询性能统计。
开发动机:
在 Coroot,我们致力于开发一款能够检测服务故障根因并为用户提供可能修复方案列表的产品。
最初,我们计划使用现有开源 Prometheus 导出器(如 postgres_exporter (https://github.com/prometheus-community/postgres_exporter),在 Github 上有 1.7k 星标)收集的指标。遗憾的是,我们发现它收集的指标对于识别最常见的性能问题毫无帮助,例如:
CPU 密集型查询影响其他查询
服务器因大多数连接处于"idle in transaction"状态而达到 max_connections 限制
I/O 密集型查询影响其他查询
某个查询通过持有排他锁阻塞其他查询
对 postgres_exporter 提出的改动过于庞大,因此我们决定开发另一个导出器。
功能特性:
全面的查询指标
该 Agent 聚合来自 pg_stat_statements 和 pg_stat_activity 的统计信息,不仅考虑已完成的查询,还考虑仍在执行中的查询。
锁监控
仅从 pg_locks 获取活跃锁的数量是不够的。DBA 真正想知道的是哪个查询正在阻塞其他查询。收集的指标能够回答这个问题。
查询规范化和脱敏
除了 Postgres 自身的查询规范化外,该 Agent 还会对所有查询进行脱敏处理,确保没有敏感数据进入指标标签。
链接
GitHub 仓库 (https://github.com/coroot/coroot-pg-agent)
博客完整公告 (https://coroot.com/blog/pg-agent)
指标说明 (https://coroot.com/docs/metrics/pg-agent)