Coroot-pg-agent - 一個適用於 Prometheus 的開源 Postgres exporter

發表於 2022-07-22,作者:Coroot
相關開源專案

Coroot 團隊很高興宣布 coroot-pg-agent – 一個開源 (Apache 2.0) Postgres exporter,適用於 Prometheus,專注於查詢效能統計。

動機

在 Coroot,我們致力於開發一款產品,可以偵測服務中斷的根本原因,並為我們的使用者提供可能的修復方案列表。

最初,我們計畫使用現有開源 Prometheus exporter 收集的指標,例如 postgres_exporter (Github 上有 1.7k 個星)。不幸的是,我們意識到它收集的指標對於識別最常見的效能問題毫無用處,例如:

  • CPU 密集型查詢正在影響其他查詢
  • 伺服器已達到其 max_connections 限制,因為大多數連線都卡在 idle in transaction 狀態
  • I/O 密集型查詢正在影響其他查詢
  • 查詢透過持有獨佔鎖來封鎖其他查詢

postgres_exporter 提出的修改將會過於龐大,因此我們決定建立另一個 exporter。

功能

全面的查詢指標

該 agent 從 pg_stat_statementspg_stat_activity 匯總統計資訊,不僅考慮到已完成的查詢,還考慮到仍在執行的查詢。

鎖監控

僅從 pg_locks 收集活動鎖的數量是不夠的。DBA 真正想知道的是哪個查詢正在封鎖其他查詢。收集到的指標可以提供這個問題的答案。

查詢正規化和混淆處理

除了 Postgres 所做的查詢正規化之外,該 agent 還混淆了所有查詢,以使沒有敏感資料進入指標標籤。

連結