Coroot-pg-agent - 用于 Prometheus 的开源 Postgres 导出器

发布于 2022-07-22,作者:Coroot
相关开源

Coroot 团队很高兴地宣布 coroot-pg-agent – 一个专注于查询性能统计的用于 Prometheus 的开源 (Apache 2.0) Postgres 导出器。

动机

在 Coroot,我们致力于开发一种产品,它可以检测服务中断的根本原因,并为我们的用户提供一系列可能的修复方案。

最初,我们计划使用现有开源 Prometheus 导出器收集的指标,例如 postgres_exporter (Github 上有 1.7k 个星)。不幸的是,我们意识到它收集的指标对于识别最常见的性能问题毫无用处,例如:

  • CPU 密集型查询正在影响其他查询
  • 服务器已达到其 max_connections 限制,因为大多数连接都处于 idle in transaction 状态
  • I/O 密集型查询正在影响其他查询
  • 查询通过持有独占锁来阻止其他查询

postgres_exporter 的拟议更改过于庞大,因此我们决定构建另一个导出器。

功能

全面的查询指标

该代理聚合来自 pg_stat_statementspg_stat_activity 的统计信息,不仅考虑已完成的查询,还考虑仍在执行的查询。

锁监控

仅仅从 pg_locks 收集活动锁的数量是不够的。DBA 真正想知道的是哪个查询正在阻止其他查询。收集的指标可以提供该问题的答案。

查询规范化和混淆

除了 Postgres 所做的查询规范化之外,该代理还会混淆所有查询,以确保敏感数据不会进入指标标签。

链接