内容提要
pgwatch v6.0.0-beta 发布,最大亮点是可直接抓取 Prometheus exporter,并将其作为与 PostgreSQL 并列的一等数据源。配置方式类似 Postgres 源,只需将 DSN 换成 URL,支持 Basic Auth、TLS 和内置 patroni 预设。自定义指标名直接作为测量列,标签转为 tag 列。未配置指标时默认每 60 秒抓取全部指标族。若下游为 Prometheus,数据按原始指标名重新暴露,无需修改仪表盘。
延伸解读
Prometheus 源与 PostgreSQL 源并列
pgwatch v6 将 Prometheus exporter 提升为一等数据源,与 PostgreSQL 源并列。配置方式类似,只需将 DSN 替换为 URL,并支持 Basic Auth、TLS 及内置 patroni 预设。这意味着用户可以在同一测量存储中同时收集 SQL 查询结果和 Prometheus 指标,无需额外运行其他采集工具。
自定义指标与标签处理
对于 Prometheus 源,自定义指标名直接作为测量列,每个 Prometheus 标签转为 tag_<label> 列,数值列以指标族命名。epoch_ns 取自样本时间戳或当前时间。特殊值如 +Inf、-Inf、NaN 会原样传递,但下游存储可能无法处理,需注意目标列类型。
默认抓取行为与下游兼容
若未配置任何指标,pgwatch 默认每 60 秒抓取 exporter 暴露的所有指标族,并记录警告,因为可能产生大量测量表。当下游为 Prometheus 时,来自 Prometheus 源的测量会以原始指标名重新暴露,而非添加 pgwatch_ 前缀,因此现有仪表盘无需修改即可继续使用。
新功能风险与使用建议
Prometheus 源是全新代码,尚未经过生产环境验证。建议先指向 staging exporter,观察采集内容,确认无误后再用于生产仪表盘。如发现问题,可向项目提交 issue。
Q&A
pgwatch v6 中 Prometheus 作为数据源是什么意思?
pgwatch v6 可以直接抓取 Prometheus exporter,将其作为与 PostgreSQL 并列的一等数据源,而不仅仅是数据汇。
如何配置 pgwatch 来抓取 Prometheus exporter?
配置方式类似 Postgres 源,只需将 DSN 换成 URL,并指定 preset_metrics 或 custom_metrics。例如:kind: prometheus, conn_str: "http://patroni-node1:8008/metrics", preset_metrics: patroni。
pgwatch 抓取 Prometheus 指标时,指标名和标签如何处理?
自定义指标名直接作为测量列,每个 Prometheus 标签转为 tag_<label> 列,数值作为以指标名命名的列,epoch_ns 来自样本时间戳或当前时间。
如果下游是 Prometheus,pgwatch 如何重新暴露数据?
来自 prometheus 源的测量会按原始指标名重新暴露,不会添加 pgwatch_ 前缀,因此原有仪表盘无需修改。
pgwatch 的 patroni 预设包含哪些指标?
内置 patroni 预设覆盖十二个指标族,包括 patroni_primary、patroni_replica、patroni_xlog_location、patroni_dcs_last_seen、patroni_pending_restart 等。
使用 pgwatch 抓取 Prometheus 时有哪些注意事项?
未配置指标时默认每 60 秒抓取全部指标族,但会记录警告,因为可能导致下游测量表数量无界;特殊值如 +Inf、-Inf、NaN 会直接传递,需注意下游存储限制。