PG Exporter v1.4.0
快照直方图支持,新增 pg_xact_age 采集器,HTTP 路由加固
v1.4.0 引入快照直方图(Snapshot Histogram)指标类型与新的 pg_xact_age 事务年龄采集器,并对 HTTP 路由、打包与构建链进行了一轮系统性加固。
新功能
- 新增
HISTOGRAM列类型:SQL 查询快照可按标签组直接聚合为经典 Prometheus 直方图,派生_bucket/_count/_sum三族序列;桶边界在配置加载阶段严格校验(有限、严格递增,自动追加+Inf),le成为保留标签,热重载安全 - 新增
pg_xact_age采集器:以直方图暴露开放事务年龄(pg_xact_age_seconds)与事务中空闲年龄(pg_xact_age_idle_seconds)的分布,集群级采集,仅统计客户端后端,TTL 10 秒 - 默认配置包从 57 个定义文件增加到 58 个;
pg_xact_age编号0450,原pg_lock/pg_lock_stat/pg_query顺延为0460/0470/0480(内容不变)
修复与改进
- HTTP 路由注册隔离到私有 ServeMux,不再使用全局
DefaultServeMux,杜绝第三方库注册的端点被意外暴露 --web.telemetry-path启动时严格校验:空路径、不以/开头、含?#{}、与内置端点冲突、以及//metrics这类注册后永远无法命中的非规范路径,一律启动即报错退出- 落地页对 telemetry path 进行 HTML 转义
--fail-fast预检失败退出时正确关闭主连接池- RPM / DEB 打包修复(#105):
prometheus系统用户 HOME 指向/var/lib/prometheus(libpq 查找~/.pgpass的惯例位置),打包默认连接串补上/postgres数据库名,避免回退到以用户名命名的库 - 版本串统一为
v前缀:官方发布二进制的--version输出、/version端点与pg_exporter_build_info{version=...}标签现在为v1.4.0(此前 GoReleaser 产物为无前缀的1.3.0);产物文件名、包版本号与 Docker 镜像 tag 命名规则不变 - 直方图值转换与标量路径语义对齐:时间戳与布尔列不应用
scale缩放 - 修正 GoReleaser 内嵌包元数据:支持范围描述更新为 PostgreSQL
9.x - 19+与 PgBouncer1.8 - 1.25+ make docker恢复GOPROXY/GOSUMDB构建参数透传
工程与构建
- 构建链更新到 Go
1.26.5、exporter-toolkitv0.17.1、prometheus/commonv0.70.0 - 新增常规 CI 验证工作流:模块 tidy 校验、生成配置漂移校验(
make conf结果与config/*.yml强一致)、race 测试与六平台交叉编译 - Docker 构建工具链整合:移除
docker/目录脚本与make docker-release,多架构发布镜像统一由 GoReleaser 构建 - 配置覆盖测试泛化:测试不再假设特定采集器必然存在于配置目录中,便于裁剪自定义配置包
升级提示
- 若此前使用了非规范的 telemetry path(如
//metrics),升级后进程将拒绝启动——此前虽能启动,但指标端点实际上不可达 - 解析
pg_exporter_build_info的version标签或--version输出的自动化脚本,需要适配v前缀 - 配置了
HISTOGRAM采集器时,le不可再用作常量标签
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.4.0/checksums.txt
