这是本节的多页打印视图。 .
PG Exporter 1.4 中文文档
为 Prometheus / Victoria 打造的极致 PostgreSQL 监控体验:超过 600+ 监控指标、声明式配置 与 动态规划 能力。
功能特性
| 特性 | 描述 |
|---|---|
| 全指标覆盖 | 600+ 指标覆盖 PostgreSQL(10-19+)与 pgBouncer(1.8-1.25+)的几乎全部统计视图 |
| 声明式采集 | 每个指标都来自 YAML 采集器定义——SQL 查询加执行条件,可自由增删改,无需改代码 |
| 动态规划 | 按目标的版本、主从角色、已装扩展与标签自动裁决每个采集器是否执行、执行哪个分支 |
| 自动发现 | 自动发现实例内的所有数据库并分别采集,指标以 datname 标签区分 |
| 健康检查 | /up、/primary、/replica 等端点可直接充当负载均衡器探针,实现主从流量路由 |
| 智能缓存 | 采集器级 TTL 缓存把抓取频率与查询频率解耦,探针与抓取风暴不会穿透到数据库 |
| 快照直方图 | HISTOGRAM 列类型将 SQL 快照聚合为经典 Prometheus 直方图分布 |
| 扩展感知 | 原生支持 pg_stat_statements、pg_wait_sampling、citus、timescaledb |
| 生产就绪 | 在真实环境中经过 6 年以上、12K+ 核心的实战检验 |
版本信息
- 当前稳定版本:
v1.4.1 - 默认配置支持:PostgreSQL 10-19+
- Legacy 配置支持:PostgreSQL 9.1-9.6(使用
legacy/配置包) - PgBouncer 支持:1.8-1.25+
完整版本历史见 发布注记。
设计逻辑
pg_exporter 的核心设计取向是「本地优先 + 可声明 + 可演进」:
- 本地优先连接:未显式指定 URL 时默认使用
postgresql:///?sslmode=disable,适配同机部署场景 - 声明式采集:指标由 YAML 采集器定义驱动,行为可通过
ttl、timeout、tags、fatal精细控制 - 动态规划:运行时依据版本、角色、扩展与标签自动选择合适的采集器分支
- 可持续运行:默认非阻塞启动,目标不可达时也可先启动 HTTP 端点,待数据库恢复后自动恢复采集
- 热重载能力:支持
POST/GET /reload与SIGHUP信号重载(非 Windows 额外支持SIGUSR1) - 健康探针分离:健康端点基于后台探测缓存,避免每次探针请求都阻塞数据库
- 管理面可收敛:
/reload、/explain、/stat会暴露配置与运行态信息,生产环境建议结合--web.config.file启用认证/TLS,或仅在内网暴露
快速安装
PG Exporter 提供多种 安装方式,适配各种基础设施:
快速开始
几分钟内即可启动 PG Exporter,参见 快速上手:
在线演示
通过在线演示环境体验 PG Exporter 的实际效果:https://g.pgsty.com
演示展示了由 PG Exporter 监控的真实 PostgreSQL 集群,包含:
- 使用 Grafana 的实时指标可视化
- 多个 PostgreSQL 版本和配置
- 扩展特定的指标和监控
- 由 Pigsty 驱动的完整可观测性堆栈
社区与支持
开源协议
PG Exporter 是基于 Apache License 2.0 许可的开源软件。
Copyright 2018-2026 © 冯若航 / rh@vonng.com
1 - 快速上手
本页是一条最短路径:安装 pg_exporter,连上一个 PostgreSQL 实例,确认指标产出,接入 Prometheus。
你需要准备的东西只有两样:一个可访问的 PostgreSQL 10-19+(或 pgBouncer 1.8+)实例,以及在其中创建用户的权限。更老的 PostgreSQL 9.1-9.6 实例请参阅 兼容性说明。
第 1 步:安装
Linux amd64 可以直接下载二进制(其他平台与 RPM/DEB/Docker 安装方式见 安装指南):
装好后确认版本:
第 2 步:创建监控用户
在目标 PostgreSQL 上创建一个专用监控用户。PostgreSQL 10+ 内置的 pg_monitor 角色已覆盖默认采集器所需的全部读取权限:
如果你只是在本机以 postgres 等超级用户试用,可以跳过这一步。
第 3 步:启动并验证
先用 --dry-run 确认配置能正确解析,再正式启动:
如果完全不指定 URL,pg_exporter 会回退到本地优先的默认连接串 postgresql:///?sslmode=disable,适合与 PostgreSQL 同机部署的场景。完整的 URL 来源优先级(--url > PG_EXPORTER_URL > PGURL > PG_EXPORTER_URL_FILE > 默认值)见 部署指南。
另开一个终端拉取指标:
你应当看到三个最核心的内置指标:
pg_up 为 1 说明链路已通,其余 600+ 指标(pg_db_*、pg_table_*、pg_wal_*……)都来自 pg_exporter.yml 中的声明式采集器定义。如果 pg_up 为 0,用 pg_exporter --log.level=debug 重启并观察连接错误。
第 4 步:接入 Prometheus
在 prometheus.yml 中添加抓取目标:
采集器自带按 ttl 的结果缓存(例如多数实时采集器 ttl: 10):只要 TTL 小于抓取间隔,每轮抓取都能拿到新数据,同时避免高频抓取压垮数据库。这也是为什么不建议把 scrape_interval 设得比常用 TTL 更短。
到这里就完成了。Grafana 侧可以直接复用 Pigsty 的 PostgreSQL 仪表盘,或到 在线演示 看实际效果。
常见问题排查
| 症状 | 排查方法 |
|---|---|
pg_up 0,连接失败 | pg_exporter --log.level=debug 查看具体报错;确认 URL、pg_hba.conf 与网络可达性 |
| 部分指标缺失 | curl localhost:9630/explain 查看每个采集器的规划结果(版本门槛、标签、谓词是否命中) |
| 某个采集器持续报错 | curl localhost:9630/stat 查看各采集器的错误计数与耗时 |
| 抓取缓慢 | 在 /stat 中找出慢采集器,调大其 ttl 或在配置中 skip: true |
/stat、/explain、/reload 属于管理端点,生产环境建议配合 --web.config.file 启用认证/TLS,或仅在内网开放,详见 API 参考。
下一步
2 - 安装指南
pg_exporter 可以通过 Pigsty、YUM/APT 仓库、GitHub 发布包(RPM/DEB/Tarball)、Docker 镜像或源码构建安装,按你的基础设施任选一种即可。
Pigsty
最简单的使用 pg_exporter 的方式是使用 Pigsty。Pigsty 内置了基于 pg_exporter、VictoriaMetrics(Prometheus 兼容指标抓取与查询)和 Grafana 的 PostgreSQL 可观测性方案;部署后即可使用预置指标、规则与仪表盘。
发布版本
您也可以直接从 GitHub 发布页面 下载 pg_exporter 软件包(RPM/DEB/Tarball):
v1.4.1 发布文件:
| 类型 | 文件 |
|---|---|
| DEB (amd64) | pg-exporter_1.4.1-1_amd64.deb |
| DEB (arm64) | pg-exporter_1.4.1-1_arm64.deb |
| DEB (ppc64le) | pg-exporter_1.4.1-1_ppc64le.deb |
| RPM (aarch64) | pg-exporter-1.4.1-1.aarch64.rpm |
| RPM (x86_64) | pg-exporter-1.4.1-1.x86_64.rpm |
| RPM (ppc64le) | pg-exporter-1.4.1-1.ppc64le.rpm |
| Tarball (Linux amd64) | pg_exporter-1.4.1.linux-amd64.tar.gz |
| Tarball (Linux arm64) | pg_exporter-1.4.1.linux-arm64.tar.gz |
| Tarball (Linux ppc64le) | pg_exporter-1.4.1.linux-ppc64le.tar.gz |
| Tarball (macOS amd64) | pg_exporter-1.4.1.darwin-amd64.tar.gz |
| Tarball (macOS arm64) | pg_exporter-1.4.1.darwin-arm64.tar.gz |
| Tarball (Windows amd64) | pg_exporter-1.4.1.windows-amd64.tar.gz |
您可以直接使用操作系统的包管理器(rpm/dpkg)安装,或者将二进制文件放入 $PATH 中。当前归档文件还会附带 pg_exporter.yml、package/pg_exporter.default、package/pg_exporter.service 与 LICENSE,便于按 tarball 手工部署。
自 v1.4.1 起,官方 RPM 的包名及文件名前缀由 pg_exporter 统一为 pg-exporter,与 DEB 及仓库安装命令保持一致。新 RPM 同时声明兼容并替换旧包名 pg_exporter,可直接从旧版升级。
完整 SHA256 校验信息见发布页面中的 checksums.txt;具体版本的校验和也会在 发布注记 中归档。
软件仓库
pg_exporter 软件包也可以在 pigsty-infra 仓库中获取。您可以将该仓库添加到系统中,然后使用操作系统包管理器安装:
YUM
适用于 RHEL、RockyLinux、CentOS、Alma Linux、OracleLinux 等 EL 系发行版:
APT
适用于 Debian、Ubuntu 及兼容的 Linux 发行版:
Docker
我们在 Docker Hub 上提供了 amd64 和 arm64 架构的预构建镜像:pgsty/pg_exporter。
当前 Docker 镜像基于 scratch。如果您使用 sslmode=verify-ca 或 verify-full 连接远程 PostgreSQL,请显式挂载 CA 证书(例如 sslrootcert 或系统 CA bundle),否则 TLS 校验可能无法完成。
兼容性
当前默认配置支持 PostgreSQL 10-19+。
对于 EOL 旧版本 PostgreSQL,可以使用仓库内置的 legacy/ 配置包进行兼容监控。
| PostgreSQL 版本 | 支持状态 |
|---|---|
| 10 ~ 19+ | ✅ 完全支持(默认配置) |
| 9.1 ~ 9.6 | ⚠️ 使用 legacy/pg_exporter.yml |
| 9.0 及更早 | ❌ 不支持 |
启用 Legacy 配置示例:
pg_exporter 支持 pgBouncer 1.8+(v1.8 是第一个支持 SHOW 命令的版本)。
| pgBouncer 版本 | 支持状态 |
|---|---|
| 1.8.x ~ 1.25+ | ✅ 完全支持 |
| 1.8.x 之前 | ⚠️ 无指标 |
3 - 配置参考
pg_exporter 的所有业务指标都由 YAML 采集器(Collector)定义驱动:每个采集器就是一条 SQL 查询,外加它的执行条件(版本、角色、标签、谓词)与运行控制(缓存、超时)。本页是采集器定义的完整参考。
配置可以是单个 YAML 文件(如默认的 pg_exporter.yml),也可以是包含多个 YAML 文件的目录——官方默认配置包正是由 config/ 目录下 58 个定义文件合并而来。
配置加载
PG Exporter 按以下顺序搜索配置:
- 命令行参数:
--config=/path/to/config - 环境变量:
PG_EXPORTER_CONFIG=/path/to/config - 当前目录:
./pg_exporter.yml - 系统配置文件:
/etc/pg_exporter.yml - 系统配置目录:
/etc/pg_exporter/
目录模式说明:
- 仅加载该目录下的
.yml/.yaml文件(非递归) - 按文件名字典序合并;同名采集器以后加载者覆盖先前定义
- 如果目录中有 YAML 文件但全部解析失败,导出器会直接返回错误而不是静默忽略
采集器结构
每个采集器是 YAML 配置中的一个顶级对象,具有唯一名称和多种属性:
配置校验约束:
- 每个
metrics列表项必须且只能定义一个列映射 - 每个采集器至少要有一个
GAUGE/COUNTER/HISTOGRAM列 usage仅支持GAUGE/COUNTER/HISTOGRAM/LABEL/DISCARDHISTOGRAM列必须定义bucket:有限、严格递增的桶上界列表,+Inf桶自动追加- 指标名、标签名会在加载阶段进行 Prometheus 规则校验,非法配置会直接报错
- 常量标签会在加载阶段检查冲突;它们不能与查询标签重名,也不能与内置动态标签
datname/query冲突;配置了HISTOGRAM采集器时,le为保留标签,不能用作常量标签 - SQL 查询结果必须包含所有声明为
LABEL的列;自v1.4.1起,缺少任一标签列都会使该采集器本轮采集失败,不再生成空标签或沿用旧结果,其他非致命采集器不受影响 - 如果使用单行内联
metrics写法,description建议始终使用双引号包裹,避免 YAML 歧义
核心配置元素
采集器分支名称
顶级键在整个配置中唯一标识一个采集器:
查询定义
检索指标的 SQL 查询:
指标类型
查询结果中的每一列必须映射到一个指标类型:
| 用途 | 描述 | 示例 |
|---|---|---|
GAUGE | 可上下波动的瞬时值 | 当前连接数 |
COUNTER | 只增不减的累计值 | 总事务数 |
HISTOGRAM | 快照直方图,派生 _bucket / _count / _sum 序列 | 事务年龄分布 |
LABEL | 用作 Prometheus 标签 | 数据库名称 |
DISCARD | 忽略此列 | 内部值 |
直方图列(HISTOGRAM)
v1.4.0 引入 HISTOGRAM 列类型:查询返回的每一行都作为一次观测,按标签组聚合为经典
Prometheus 直方图快照,派生 <name>_bucket(含 le 标签与 +Inf 桶)、<name>_count、
<name>_sum 三族序列:
使用注意:
- 这是 快照 直方图:每次抓取重建整个分布,桶计数可增可减,语义上更接近 Gauge。
histogram_quantile()可以直接使用,但对_count/_sum使用rate()/increase()没有意义 - SQL
NULL默认忽略不计入观测;显式配置default时按默认值计入 scale在分桶前应用于观测值;与标量列一致,时间戳与布尔值不受scale影响- 默认配置包中的
pg_xact_age采集器即为参考实现
缓存控制(TTL)
ttl 参数控制结果缓存:
最佳实践:
- 将 TTL 设置为小于您的抓取间隔
- 对昂贵的查询使用较长的 TTL
- TTL 为 0 表示禁用缓存
超时控制
防止查询运行时间过长:
版本兼容性
控制哪些 PostgreSQL 版本可以运行此采集器:
版本号使用 PostgreSQL 内部 server_version_num 规则:
100000表示 10.0130200表示 13.2160100表示 16.1190000表示 19.090600表示 9.6(Legacy 配置场景)
执行模型
理解一个采集器从定义到产出指标的完整路径,有助于回答"为什么这个指标没出来":
- 规划(建立连接或热重载时):对每个采集器分支依次检查——目标类型(PostgreSQL / pgBouncer)、
min_version/max_version版本门槛、tags与服务器角色及 exporter 标签的匹配、skip开关。未通过的分支不会安装到该目标上。curl localhost:9630/explain展示的正是这一步的裁决结果。 - 抓取(每次
/metrics请求):对已安装的采集器——缓存在ttl内则直接返回缓存结果;否则先执行predicate_queries(任一返回假则本轮跳过,pg_exporter_query_scrape_predicate_skip_count计数),再在timeout限制下执行主查询,结果转为指标并写入缓存。 - 失败语义:普通采集器失败只影响自身(
pg_exporter_query_scrape_error_count上升,本轮缺失该组指标);标记fatal: true的采集器失败会使整次服务器抓取被判定为失败。
标签系统
标签控制采集器的执行时机和位置:
内置标签
| 标签 | 描述 |
|---|---|
cluster | 每个 PostgreSQL 集群执行一次 |
primary / master | 仅在主服务器上执行 |
standby / replica | 仅在从服务器上执行 |
pgbouncer | 仅用于 pgBouncer 连接 |
前缀标签
| 前缀 | 示例 | 描述 |
|---|---|---|
dbname: | dbname:postgres | 仅在特定数据库上执行 |
username: | username:monitor | 仅使用特定用户时执行 |
extension: | extension:pg_stat_statements | 仅当扩展已安装时执行 |
schema: | schema:public | 仅当模式存在时执行 |
not: | not:slow | 当导出器没有该标签时执行 |
自定义标签
向导出器传递自定义标签:
然后在配置中使用:
谓词查询
在执行主查询之前进行条件检查:
只有当所有谓词返回 true 时,主查询才会执行。
指标定义
基本定义
高级选项
采集器组织
PG Exporter 自带预先组织好的采集器:
| 范围 | 类别 | 描述 |
|---|---|---|
| 0xx | 文档 | 示例和文档 |
| 1xx | 基础 | 服务器信息、设置、元数据 |
| 2xx | 复制 | 复制、槽位、接收器 |
| 3xx | 持久化 | I/O、检查点、WAL |
| 4xx | 活动 | 连接、锁、查询 |
| 5xx | 进度 | Vacuum、索引创建进度 |
| 6xx | 数据库 | 每数据库统计 |
| 7xx | 对象 | 表、索引、函数 |
| 8xx | 可选 | 昂贵/可选指标 |
| 9xx | pgBouncer | 连接池指标 |
| 10xx+ | 扩展 | 扩展特定指标 |
实际示例
简单的 Gauge 采集器
带标签的 Counter
版本特定采集器
扩展依赖采集器
自定义采集器
创建自己的指标
- 在配置目录中创建新的 YAML 文件:
- 测试您的采集器:
条件指标
使用谓词查询实现条件指标:
性能优化
查询优化技巧
使用适当的 TTL 值:
- 快速查询:1-10 秒
- 中等查询:10-60 秒
- 昂贵查询:300-3600 秒
设置合理的超时:
- 默认:100ms
- 复杂查询:500ms-1s
- 生产环境中不要禁用超时
使用集群级标签:
YAML禁用昂贵的采集器:
YAML
监控采集器性能
检查采集器执行统计:
配置故障排查
验证配置
常见问题
| 问题 | 解决方案 |
|---|---|
| 指标缺失 | 检查标签和版本兼容性 |
| 抓取缓慢 | 增加 TTL、添加超时、禁用昂贵查询 |
| 内存使用高 | 减少结果集大小,使用 LIMIT |
| 权限错误 | 验证监控用户的查询权限 |
调试日志
启用调试日志进行故障排查:
4 - API 参考
pg_exporter 在监听端口(默认 :9630)上暴露四类 HTTP 端点:指标、健康检查、流量路由与运维管理。全部端点如下:
| 端点 | 方法 | 描述 |
|---|---|---|
/metrics | GET | Prometheus 指标端点(路径可经 --web.telemetry-path 修改) |
/up | GET | 存活检查;别名 /health、/liveness、/readiness、/read |
/primary | GET | 主库检查;别名 /leader、/master、/read-write、/rw |
/replica | GET | 从库检查;别名 /standby、/slave、/read-only、/ro |
/reload | GET/POST | 热重载采集器配置 |
/explain | GET | 展示各采集器的规划裁决结果 |
/stat | GET | 各采集器的运行统计(命中/错误/耗时) |
/version | GET | 版本与构建信息(文本) |
/ | GET | 落地页,链接到指标端点 |
健康与路由端点的判定基于后台探测缓存的角色状态(primary / replica / down / starting / unknown),不会在每次 HTTP 请求时同步查询数据库——探针风暴不会穿透到数据库。
指标端点
GET /metrics
暴露所有采集指标的主端点,格式为 Prometheus 格式。
请求
响应
响应格式
指标遵循 Prometheus 暴露格式:
自监控指标
除 YAML 采集器定义的业务指标外,/metrics 还暴露 exporter 自身的运行指标(可用 --disable-intro 关闭 pg_exporter_* 部分;前缀随 --namespace 变化,pgBouncer 模式下为 pgbouncer_):
| 指标 | 标签 | 描述 |
|---|---|---|
pg_up | — | 能连上目标库为 1,否则为 0 |
pg_version | — | server_version_num 格式的服务器版本号 |
pg_in_recovery | — | 处于恢复模式(从库)为 1 |
pg_exporter_build_info | version, revision, … | 恒为 1,构建信息在标签中 |
pg_exporter_up | — | exporter 存活即为 1 |
pg_exporter_uptime | — | exporter 启动以来的秒数 |
pg_exporter_scrape_total_count / _error_count | — | 累计抓取次数 / 失败次数 |
pg_exporter_scrape_duration | — | 最近一次抓取耗时(秒) |
pg_exporter_last_scrape_time | — | 最近一次抓取的时间戳 |
pg_exporter_server_scrape_* | datname | 每个目标库的抓取耗时与成败计数 |
pg_exporter_query_scrape_duration | datname, query | 每个采集器的最近执行耗时 |
pg_exporter_query_scrape_total_count / _error_count | datname, query | 每个采集器的执行 / 失败计数 |
pg_exporter_query_scrape_hit_count / _metric_count | datname, query | 每个采集器返回的行数 / 产出的指标数 |
pg_exporter_query_scrape_predicate_skip_count | datname, query | 因谓词不满足而跳过的次数 |
pg_exporter_query_cache_ttl | datname, query | 采集器结果缓存的 TTL |
用 pg_exporter_query_scrape_duration 与 _error_count 可以直接定位慢采集器与故障采集器,等价于 /stat 的机器可读版本。
健康检查
健康检查端点提供多种方式来监控 PG Exporter 和目标数据库的状态。
GET /up
简单的存活检查(基于后台探针缓存状态,不会在每次 HTTP 请求时主动探测数据库)。
响应码
| 状态码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 目标可用(primary/replica) |
| 503 | Service Unavailable | 目标不可用(down/starting/unknown) |
示例
GET /health
/up 的别名,行为相同。
GET /liveness 与 GET /readiness
为 Kubernetes 探针习惯提供的路径别名,行为与 /up 完全一致(同一处理器):
注意二者语义相同:目标数据库不可达时都会返回 503。若不希望"数据库宕机导致 exporter Pod 被重启",liveness 探针可以改用 TCP 探测监听端口。
流量路由
这些端点专为负载均衡器和代理设计,根据服务器角色路由流量。
GET /primary
检查服务器是否为主库(primary)实例。
响应码
| 状态码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 服务器是主库且接受写入 |
| 404 | Not Found | 服务器不是主库(是从库) |
| 503 | Service Unavailable | 服务器不可用(down/starting/unknown) |
别名
/leader/master/read-write/rw
示例
GET /replica
检查服务器是否为从库(standby)实例。
响应码
| 状态码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 服务器是从库且处于恢复状态 |
| 404 | Not Found | 服务器不是从库(是主库) |
| 503 | Service Unavailable | 服务器不可用(down/starting/unknown) |
别名
/standby/read-only/ro
/slave 仍兼容,但建议优先使用 /replica。
示例
GET /read
检查服务器是否可以处理读流量(主库和从库都可以)。
响应码
| 状态码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 服务器正常运行且可以处理读请求 |
| 503 | Service Unavailable | 服务器不可用(down/starting/unknown) |
示例
运维端点
GET /reload / POST /reload
在不重启导出器的情况下重新加载配置。
请求
响应
响应码
| 状态码 | 状态 | 描述 |
|---|---|---|
| 200 | OK | 配置重新加载成功 |
| 500 | Internal Server Error | 重新加载失败(返回 fail to reload: ...) |
| 405 | Method Not Allowed | 非 GET/POST 方法(Allow: GET, POST) |
使用场景
- 更新采集器定义
- 更改查询参数
- 修改缓存 TTL 值
- 添加或移除采集器
重载会刷新采集器配置和查询计划;如需修改进程级参数(例如监听地址、CLI 参数),仍需重启导出器。
/reload、/explain、/stat 都属于管理端点。若 exporter 不仅在本机或可信内网使用,建议通过 --web.config.file 启用认证/TLS,或在反向代理 / 防火墙层限制访问。
GET /explain
显示所有已配置采集器的查询执行规划信息。
请求
响应
GET /stat
显示运行时统计信息,包括采集器执行时间和成功/失败计数。
请求
响应
此端点对于识别慢速或有问题的采集器非常有用。
在负载均衡器中使用
HAProxy 配置示例
关于 Nginx
Nginx 开源版不支持基于旁路端口的主动 HTTP 健康检查(health_check 指令是 NGINX Plus 功能),且代理 PostgreSQL 流量需要 stream 模块而非 http 代理。按角色路由 PostgreSQL 流量请优先使用上面的 HAProxy 方案,或 Patroni + vip-manager 等方案。
5 - 部署指南
本页覆盖把 pg_exporter 放进生产环境要做的事:进程参数与环境变量、监控用户与凭据管理、systemd / Docker / Kubernetes 三种部署形态、pgBouncer 与自动发现,以及 Prometheus 侧的抓取与告警配置。
进程级配置有两个来源,优先级从高到低:
- 命令行参数(
--url、--config等) - 环境变量(每个参数都有对应的
PG_EXPORTER_*变量)
指标采集行为则完全由 YAML 采集器定义驱动(默认 /etc/pg_exporter.yml,亦可指向配置目录),详见 配置参考。
命令行参数
pg_exporter --help 的完整参数列表:
两点部署相关的行为说明:
- 启动策略:默认非阻塞启动——目标库暂时不可达时,HTTP 端点照常拉起,后台持续探测直到恢复;如果希望"连不上就失败退出"(例如交由 systemd/编排器重启决策),设置
--fail-fast。 - telemetry path 校验:自 v1.4.0 起,
--web.telemetry-path在启动时严格校验,空路径、与内置端点冲突、或//metrics这类永远无法命中的非规范路径会直接报错退出。
连接 URL 的来源
连接串按以下优先级解析,取第一个非空值:
--url/-u命令行参数PG_EXPORTER_URL环境变量PGURL环境变量PG_EXPORTER_URL_FILE指向文件的内容(适合容器 Secret 挂载)- 默认值
postgresql:///?sslmode=disable(本地优先,适配同机部署)
URL 中未指定 sslmode 时会自动补 sslmode=disable。另外,PGSERVICE / PGSERVICEFILE 等 libpq 服务文件环境变量会在启动时被清除并记录日志——服务文件可能覆盖显式指定的连接目标,pg_exporter 要求"日志里宣告的 URL 就是实际连接的 URL"。
监控用户与凭据
创建监控用户
CONNECTION LIMIT 建议保留:exporter 正常只占用一至数个连接(自动发现时每库一个),限流可以防止配置错误时耗尽连接。
使用 .pgpass 管理密码
把密码从 URL 中拿掉,交给 libpq 的 .pgpass 机制:
包安装的服务以 prometheus 系统用户运行。自 v1.4.0 起该用户的 HOME 指向 /var/lib/prometheus(libpq 查找 ~/.pgpass 的位置),但安装包 不会 创建这个目录。使用 .pgpass 前请先执行:
install -d -o prometheus -g prometheus /var/lib/prometheus
数据库连接 TLS
HTTP 端口侧的保护
/metrics 之外,/reload、/explain、/stat 属于管理端点:能访问该端口的任何人都可以读取配置与运行态信息、触发重载。如果 exporter 暴露在共享网络中,请通过 --web.config.file(exporter-toolkit web 配置)启用 TLS/Basic Auth,或在防火墙/反向代理层限制来源。
Systemd 部署(RPM/DEB 包)
RPM/DEB 包已内置服务单元与环境文件,安装后仅需修改环境文件并启动:
环境文件 /etc/default/pg_exporter(包默认值):
所有命令行参数都有对应环境变量,需要时(如 PG_EXPORTER_DISABLE_INTRO)直接在此追加即可。该文件以 noreplace 方式打包,升级不会覆盖你的修改。
常用管理命令:
Docker 部署
Docker Compose:
官方镜像基于 scratch,不含系统 CA 证书。若以 sslmode=verify-ca / verify-full 连接远程 PostgreSQL,请显式挂载 CA 证书并通过 sslrootcert 指定,否则 TLS 校验无法完成。
Kubernetes 部署
也可以用 PG_EXPORTER_URL_FILE 指向 Secret 挂载出的文件,避免把连接串放进环境变量。
自动发现
自动发现(默认启用)让一个 exporter 实例监控目标 PostgreSQL 中的所有数据库:
行为规则:
- 集群级采集器(
tags: [cluster])只在主连接上执行一次 - 数据库级采集器在每个被发现的库上分别执行,指标带
datname标签区分 - 新建/删除的数据库会在后续规划周期被自动纳入/移除
监控 pgBouncer
将 URL 的数据库名设为 pgbouncer 即可切换到 pgBouncer 模式(以此触发自动检测):
pgBouncer 模式下,exporter 使用 pgbouncer 指标前缀,只执行 pgBouncer 专属采集器(SHOW STATS / SHOW POOLS 等)。通常的做法是为 PostgreSQL 和 pgBouncer 各跑一个 exporter 实例(不同端口)。
Prometheus 抓取与告警
抓取配置
Kubernetes 服务发现:
抓取间隔建议不小于常用采集器的 ttl(默认配置多为 10 秒):TTL 缓存保证了更高频的抓取只会拿到缓存结果,徒增开销。
告警规则
以下规则全部基于真实存在的指标:
基于角色的流量路由
/primary、/replica、/read 等健康检查端点可以直接充当 HAProxy 等负载均衡器的健康检查探针,实现主从读写分离。端点语义与完整的 HAProxy 配置示例见 API 参考。
注意:Nginx 开源版不支持基于旁路端口的主动 HTTP 健康检查(health_check 为 NGINX Plus 功能),按角色路由 PostgreSQL 流量请优先使用 HAProxy,或 Patroni + vip-manager 等方案。
6 - 发布注记
pg_exporter 的最新稳定版本是 v1.4.1
| 版本 | 日期 | 摘要 | GitHub |
|---|---|---|---|
| v1.4.1 | 2026-07-29 | 修复逻辑订阅计数与标签列校验,统一 RPM 包名 | v1.4.1 |
| v1.4.0 | 2026-07-18 | 快照直方图支持,新增 pg_xact_age 采集器,HTTP 路由加固 | v1.4.0 |
| v1.3.0 | 2026-06-24 | PostgreSQL 19 支持,新增 PG19 采集器与分支 | v1.3.0 |
| v1.2.2 | 2026-04-14 | 例行更新到 Go 1.26.2,无功能改动 | v1.2.2 |
| v1.2.1 | 2026-03-21 | 配置样式统一,Go 1.26.1 更新 | v1.2.1 |
| v1.2.0 | 2026-02-12 | 热重载与非阻塞启动,新增 PG9.1-9.6 legacy 支持 | v1.2.0 |
| v1.1.2 | 2026-01-16 | 修复 pg_timeline 配置问题,使用最新依赖构建 | v1.1.2 |
| v1.1.1 | 2025-12-30 | 新增 pg_timeline 采集器,pg_sub_16 分支,Bug 修复 | v1.1.1 |
| v1.1.0 | 2025-12-15 | 更新默认指标采集器,升级到 Go 1.25.5 | v1.1.0 |
| v1.0.3 | 2025-11-20 | 例行更新到 1.25.4,修复不支持的 libpq 环境变量 | v1.0.3 |
| v1.0.2 | 2025-08-14 | 使用 goreleaser 构建更多操作系统架构 | v1.0.2 |
| v1.0.1 | 2025-07-17 | DockerHub 镜像,Go 1.24.5,禁用 pg_tsdb_hypertable | v1.0.1 |
| v1.0.0 | 2025-05-06 | PostgreSQL 18 支持,新增 WAL/检查点/I/O 指标 | v1.0.0 |
| v0.9.0 | 2025-04-26 | TimescaleDB、Citus、pg_wait_sampling 采集器 | v0.9.0 |
| v0.8.1 | 2025-02-14 | 依赖更新,Docker 镜像标签 | v0.8.1 |
| v0.8.0 | 2025-02-14 | PgBouncer 1.24 支持,Go 1.24,日志重构 | v0.8.0 |
| v0.7.1 | 2024-12-29 | 例行更新,支持 Reader 配置 | v0.7.1 |
| v0.7.0 | 2024-08-13 | PostgreSQL 17 支持,谓词查询功能 | v0.7.0 |
| v0.6.0 | 2023-10-18 | PostgreSQL 16 支持,ARM64 包,安全修复 | v0.6.0 |
| v0.5.0 | 2022-04-27 | RPM/DEB 构建,列缩放,指标增强 | v0.5.0 |
| v0.4.1 | 2022-03-08 | 采集器更新,connect-timeout 参数 | v0.4.1 |
| v0.4.0 | 2021-07-12 | PostgreSQL 14 支持,自动发现功能 | v0.4.0 |
| v0.3.2 | 2021-02-01 | Shadow DSN 修复,文档更新 | v0.3.2 |
| v0.3.1 | 2020-12-04 | 旧版 PostgreSQL 配置修复 | v0.3.1 |
| v0.3.0 | 2020-10-29 | PostgreSQL 13 支持,REST API,虚拟服务器 | v0.3.0 |
| v0.2.0 | 2020-03-21 | YUM 包,配置重载支持 | v0.2.0 |
| v0.1.2 | 2020-02-20 | 动态配置重载,批量模式 | v0.1.2 |
| v0.1.1 | 2020-01-10 | 启动挂起 Bug 修复 | v0.1.1 |
| v0.1.0 | 2020-01-08 | 首个稳定版本 | v0.1.0 |
| v0.0.4 | 2019-12-20 | 生产环境测试版本 | v0.0.4 |
| v0.0.3 | 2019-12-14 | 生产环境测试 | v0.0.3 |
| v0.0.2 | 2019-12-09 | 早期测试版本 | v0.0.2 |
| v0.0.1 | 2019-12-06 | 初始版本,支持 PgBouncer 模式 | v0.0.1 |
v1.4.1
v1.4.1 是一次聚焦监控准确性与 RPM 升级兼容性的维护版本。
变更摘要:
- 修复
pg_subrel_count在并行逻辑复制工作进程场景下重复计数的问题:先按订阅 ID 与名称去重pg_stat_subscription,再汇总各订阅关系状态 - 查询结果缺少配置声明的
LABEL列时,该采集器本轮采集会整体失败,不再生成空标签或沿用旧结果;其他非致命采集器仍会继续工作 - 官方 RPM 包名及产物文件名前缀由
pg_exporter统一为pg-exporter;新包声明兼容并替换旧包名,可直接升级 - 更新版本与独立安装包元数据,增加缺失标签列的回归测试,并在 CI 中校验 RPM 配置、产物名称及兼容元数据
升级提示:
- 自定义采集器的 SQL 必须返回全部
LABEL列;即使结果为零行,返回结果的列定义也必须完整 - 若脚本直接匹配 GitHub RPM 文件名,请将
pg_exporter-*.rpm更新为pg-exporter-*.rpm
https://github.com/pgsty/pg_exporter/releases/tag/v1.4.1
v1.4.0
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
https://github.com/pgsty/pg_exporter/releases/tag/v1.4.0
v1.3.0
v1.3.0 提供对 PostgreSQL 19 新指标的支持,同时刷新默认采集器包、构建链和配置覆盖测试。
变更摘要:
- 默认支持范围从 PostgreSQL 10-18+ 扩展到 10-19+
- 默认配置包包含 57 个
config/*.yml定义文件 - 构建依赖更新到 Go
1.26.4、lib/pq v1.12.3、Prometheus clientv1.23.2、exporter-toolkitv0.16.0。 pg_recovery_state:在恢复节点上采集pg_stat_recovery,暴露提升触发、回放 LSN、时间线、恢复事务时间与暂停状态。pg_lock_stat:采集 PG19pg_stat_lock,按locktype暴露等待次数、等待时间和 fast-path 溢出次数。pg_vacuum_score:采集pg_stat_autovacuum_scores当前数据库摘要,暴露最大 autovacuum 分数和候选表数量。pg_wal_19:在 PG19 上暴露wal_fpi_bytes,指标名为pg_wal_fpi_bytes。pg_sub_19:基于pg_stat_subscription_stats适配序列同步与逻辑复制冲突统计,继续提供兼容旧仪表盘的sync_error_count。pg_recv:PG13+ WAL receiver 分支识别 PG19connecting状态。pg_slot:识别 PG19 replication slotidle_timeout失效原因。pg_db_confl:改为显式列清单,避免未来视图新增列被意外导出。pg_backup、pg_vacuuming、pg_clustering继续复用现有稳定分支,避免为低价值 PG19 字段改变已有指标面。
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.3.0/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.3.0
v1.2.2
v1.2.2 是一次例行维护发布,仅将发布构建链更新到 Go 1.26.2,未引入新的采集器、配置语义或运行时行为变更。
变更摘要:
- 刷新构建链:发布流程更新到 Go
1.26.2 - 无功能改动:未调整采集器、默认配置、指标定义或运行时行为
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.2.2/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.2.2
v1.2.1
v1.2.1 是一次轻量维护版本,重点放在发布工程、配置包一致性与文档/元数据刷新上,不引入新的采集器语义或运行时行为变更。
变更摘要:
- 刷新构建链:发布流程与 Docker 构建基础镜像升级到 Go
1.26.1 - 统一配置样式:将当前配置与 Legacy 配置中的内联
description统一改为双引号写法,并重新生成合并后的pg_exporter.yml/legacy/pg_exporter.yml - 增加配置一致性测试:新增 split/merged config 等价性校验,以及内联指标描述风格检查,减少配置漂移风险
- 刷新打包元数据:RPM / DEB 描述中的支持范围更新为 PostgreSQL
9.x - 18+与 pgBouncer1.8 - 1.25+,并更新 Pigsty 文档入口链接
校验和
https://github.com/pgsty/pg_exporter/releases/tag/v1.2.1
v1.2.0
v1.2.0 是一次聚焦稳定性与兼容性的中版本更新,覆盖启动流程、热重载、健康检查、配置校验与 Legacy 支持。
新功能:
- 支持配置热重载:新增平台相关的信号重载(
SIGHUP/SIGUSR1),并强化POST /reload工作流,可在不重启进程情况下更新配置与查询计划 - 启动流程改为非阻塞:即使目标库预检失败,也会先启动 HTTP 服务,便于监控系统先接入后恢复
- 新增 PostgreSQL 9.1-9.6 Legacy 配置套件:提供
legacy/配置目录与make conf9目标,便于 EOL 老版本平滑接入 - 健康检查机制重构:引入缓存健康快照与周期探测,读写角色类健康端点行为更一致,重载期间更平滑
- 工程链路增强:Release 工作流增加
go test与go vet,并升级构建链到 Go 1.26.0
Bug 修复:
- 修复多处配置解析边界问题:拒绝非法 metrics 定义、无效目录加载失败场景可正确报错,并补齐运行时回退逻辑
- 修复命令行布尔参数解析:正确处理
--flag=false风格传参,避免被误判为启用 - 修复
/explain输出与渲染安全性:调整内容类型并改用更安全的模板渲染路径 - 修复谓词查询与连接 URL 处理细节:增强 BOOL/BOOLEAN 条件支持、完善
dbname查询参数解析与 URL 脱敏输出 - 修复自动发现目标移除时的资源释放行为:异步关闭已移除数据库连接,降低采集阻塞风险
- 修复指标与标签校验细节:补齐常量标签冲突检查、默认值缩放处理与若干 Prometheus 规则校验
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.2.0/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.2.0
v1.1.2
小版本更新,修复 pg_timeline 配置问题,使用最新 Go 依赖构建。
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.1.2/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.1.2
v1.1.1
小版本更新,新增采集器和 Bug 修复。
新功能:
- 新增
pg_timeline采集器,用于时间线监控 - 新增
pg_sub_16采集器分支,排除订阅中的并行操作(PostgreSQL 16+ 兼容性)
Bug 修复:
- 修复:为
pg_recv采集器的 slotname 添加 coalesce 以处理 NULL 值
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.1.1/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.1.1
v1.1.0
使用 Go 1.25.5 和最新依赖构建,采集器更新:
采集器变更:
pg_setting:针对 PG10-18 兼容性进行重大重构,支持missing_ok- 新增 13 个指标:
max_parallel_workers、max_parallel_workers_per_gather、max_parallel_maintenance_workers、shared_buffers、maintenance_work_mem、effective_cache_size、fsync、full_page_writes、autovacuum、autovacuum_max_workers、checkpoint_timeout、checkpoint_completion_target、hot_standby、synchronous_commit、io_method - 将
work_memory_size重命名为work_mem - min_version 从 9.6 改为 10,显式
::int类型转换
- 新增 13 个指标:
pg_size:修复日志目录大小检测,使用logging_collector检查代替路径模式匹配pg_table:性能优化,用 JOIN 替换 LATERAL 子查询以提升查询性能;修复tuples和frozenxid指标类型从 COUNTER 改为 GAUGE;超时从 1s 增加到 2spg_vacuuming:新增 PG17 采集器分支,包含新指标indexes_total、indexes_processed、dead_tuple_bytes用于索引 vacuum 进度跟踪pg_query:超时从 1s 增加到 2s 以应对高负载场景pg_io:修复reuses描述中的拼写错误(“in reused” -> “is reused”)pg_checkpointer:修复 pg_checkpointer_10 描述(“9.4+” -> “9.4-17”)pg_db_confl:修复 pg_db_confl_15 描述(“9.1 - 16” -> “9.1 - 15”)pg_db、pg_indexing、pg_clustering、pg_backup格式对齐修复
其他变更:
- 由 @anayrat 修复发布年份
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.1.0/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.1.0
v1.0.3
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.0.3/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.0.3
v1.0.2
- 使用 Go 1.25.0 和最新依赖构建
- 专属网站和主页:https://exp.pgsty.com
- 使用 goreleaser 通过 CI/CD 流水线发布更多操作系统/架构:
- 新增 Windows amd64 支持
- 新增 Linux ppc64le 支持
校验和
https://github.com/pgsty/pg_exporter/releases/download/v1.0.2/checksums.txt
https://github.com/pgsty/pg_exporter/releases/tag/v1.0.2
v1.0.1
- 新增 DockerHub 镜像:pgsty/pg_exporter
- 升级 Go 依赖到最新版本,使用 Go 1.24.5 构建
- 默认禁用
pg_tsdb_hypertable采集器,因为timescaledb目录已变更
校验和
https://github.com/pgsty/pg_exporter/releases/tag/v1.0.1
v1.0.0
新增 PostgreSQL 18 指标支持
- 新采集器分支
pg_wal_18:- 移除
write、sync、write_time、sync_time指标 - 移至
pg_stat_io
- 移除
- 新采集器分支
pg_checkpointer_18:- 新指标
num_done - 新指标
slru_written
- 新指标
- 新采集器分支
pg_db_18:- 新指标
parallel_workers_to_launch - 新指标
parallel_workers_launched
- 新指标
- 新采集器分支
pg_table_18:table_parallel_workers_to_launchtable_parallel_workers_launched
- 新采集器分支
pg_io_18:- 新增 WAL 统计系列
- 新指标
read_bytes - 新指标
write_bytes - 新指标
extend_bytes - 移除
op_bytes(因为是固定值)
- 新采集器分支
pg_vacuuming_18:- 新指标
delay_time
- 新指标
https://github.com/pgsty/pg_exporter/releases/tag/v1.0.0
v0.9.0
默认采集器
- 新增
timescaledb超表指标采集器 - 新增
citus分布式节点指标采集器 - 新增
pg_wait_sampling等待事件采集器 pg_slot全面改进:新增 16/17 pg_replication_slot 指标- 允许
pg_slot采集器从 16/17 开始在从库上运行 - 重构
pg_wait采集器,从所有进程聚合 - 限制 pg_clustering、pg_indexing、pg_vacuuming 只在主库运行
- 将所有
reset_time标记为GAUGE而非COUNTER - 修复
pg_recovery_prefetch_skip_fpw类型从GAUGE改为COUNTER - 修复
pg_recv.state类型从LABEL改为GAUGE - 采集器格式改为紧凑模式
- 新增默认指标
pg_exporter_build_info/pgbouncer_exporter_build_info - 为
pg_meta采集器新增server_encoding - 为
pg_setting采集器新增 12 个设置指标:- wal_block_size
- segment_size
- wal_segment_size
- wal_level
- wal_log_hints
- work_mem
- hugepage_count
- hugepage_status
- max_wal_size
- min_wal_size
- max_slot_wal_keep_size
导出器代码库
- 使用最小 PG 版本后缀规范化采集器分支名称
- 为二进制包添加许可证文件
- 将
pgsty/pg_exporter仓库移至pgsty/pg_exporter - 重构
server.go以降低Compatible和PostgresPrecheck复杂度 - 使用额外数字前缀重命名指标采集器以便排序
- 升级依赖到最新版本
- 在所有非致命采集器之前执行致命采集器,快速失败
https://github.com/pgsty/pg_exporter/releases/tag/v0.9.0
v0.8.1
- 升级依赖到最新版本
- 升级 golang.org/x/net 从 0.35.0 到 0.36.0 #67
- 更新 Docker 镜像构建标签
https://github.com/pgsty/pg_exporter/releases/tag/v0.8.1
v0.8.0
- 新增 PgBouncer 1.24 新指标支持(stat、pool、database)
- 修复:
310-pg_size.yml在日志目录设置不正确时失败 #64,由 @Süleyman Vurucu 贡献 - 使用最新 Go 1.24 构建并升级所有依赖
- 使用标准
log/slog重构日志,替代go-kit - 完整变更日志:https://github.com/pgsty/pg_exporter/compare/v0.7.1…v0.8.0
https://github.com/pgsty/pg_exporter/releases/tag/v0.8.0
v0.7.1
使用 dependabot 进行例行更新
- 功能:支持将配置指定为 Reader,由 @ringerc 在 #62 贡献
- 升级 golang.org/x/crypto 从 0.21.0 到 0.31.0,由 @dependabot 在 #63 贡献
- 修复一些拼写错误
- 完整变更日志:https://github.com/pgsty/pg_exporter/compare/v0.7.0…v0.7.1
https://github.com/pgsty/pg_exporter/releases/tag/v0.7.1
v0.7.0
为最新 Go 版本重构代码库。
- PostgreSQL 17 指标支持,由 @Vonng 贡献
- pg_exporter: 谓词查询功能,由 @ringerc 贡献
- 在 Dockerfile 中进行干净构建,由 @ringerc 贡献
- pg_exporter: “bind: address already in use” 后不再 panic,由 @ringerc 贡献
- pg_exporter: 修复 /stat 端点格式,由 @ringerc 贡献
- pg_exporter: yaml 导出时省略默认查询属性,由 @ringerc 贡献
- 从发现中排除模板数据库并模式限定发现查询,由 @ringerc 贡献
- 修复一些拼写错误和指标描述错误,由 @ringerc 贡献
- 从废弃的 lib/pq 驱动切换到带 stdlib 包装的 pgx,由 @ringerc 贡献
https://github.com/pgsty/pg_exporter/releases/tag/v0.7.0
v0.6.0
安全增强:修复 安全 dependabot 问题
新增 pg16 采集器
新增
arm64和aarch64包移除
pg_query采集器的monitor模式要求(您需要通过 search_path 确保或直接在默认public模式中安装pg_stat_statements)修复 pgbouncer 版本解析消息级别从 info 改为 debug
修复
pg_table_10_12采集器缺少relid的问题
https://github.com/pgsty/pg_exporter/releases/tag/v0.6.0
v0.5.0
导出器增强
- 使用
nfpm构建 rpm 和 deb - 新增
column.default,当指标值为 NULL 时替换 - 新增
column.scale,当指标值为浮点/整数时乘以缩放因子(例如微秒转秒) - 修复
/stat端点输出 - 新增 Docker 容器
pgsty/pg_exporter
指标采集器
- 将 bgwriter 和 pg_wal 时间单位缩放为秒
- 移除 pg_class 采集器,将其移至 pg_table 和 pg_index
- 为 pg_table 新增 pg_class 指标
- 为 pg_index 新增 pg_class 指标
- 默认启用 pg_table_size
- 将 pg_query、pg_db、pg_bgwriter、pg_ssl、pgbouncer_stat 时间指标缩放为秒
https://github.com/pgsty/pg_exporter/releases/tag/v0.5.0
v0.4.1
- 更新默认采集器
- 在对象监控中省略 citus 和 timescaledb 模式
- 避免重复的 pg_statio 元组
- 支持 pgbouncer v1.16
- Bug 修复:
pg_repl采集器在 pg 12 上重叠
- 新参数:
-Tconnect-timeoutPG_EXPORTER_CONNECT_TIMEOUT这在监控远程 Postgres 实例时很有用 - 现在
pg_exporter.yaml在 rpm 包中重命名为pg_exporter.yml
https://github.com/pgsty/pg_exporter/releases/tag/v0.4.1
v0.4.0
- 新增 PG 14 支持
- 默认指标配置全面改进(但您仍可使用旧配置)
- 新增
auto-discovery、include-database和exclude-database选项 - 新增多数据库监控实现(使用
auto-discovery = on)
https://github.com/pgsty/pg_exporter/releases/tag/v0.4.0
v0.3.2
- 修复 shadow DSN 边界情况
- 修复拼写错误和文档
https://github.com/pgsty/pg_exporter/releases/tag/v0.3.2
v0.3.1
修复默认配置问题(特别是低于 13 的版本)
- 设置
primary_conninfo在 PG13 之前不存在 - 为
pg_func采集器添加funcid标签以避免函数名重复标签 - 修复版本字符串为
pg_exporter
https://github.com/pgsty/pg_exporter/releases/tag/v0.3.1
v0.3.0
https://github.com/pgsty/pg_exporter/releases/tag/v0.3.0
- 更改默认配置,支持 PostgreSQL 13 新指标(
pg_slru、pg_shmem、pg_query13、pg_backup等) - 新增一系列用于健康/恢复状态检查的 REST API
- 新增一个带有假
pg_up 0指标的虚拟服务器,在 PgExporter 初始化之前提供服务 - 如果未指定
sslmode,向 URL 添加sslmode=disable - 修复拼写错误和 Bug
v0.2.0
- 新增 yum 包和 Linux 服务定义
- 在查询配置中新增 ‘skip’ 标志
- 修复
pgbouncer_up指标 - 新增配置重载支持
https://github.com/pgsty/pg_exporter/releases/tag/v0.2.0
v0.1.2
- 修复 pgbouncer_up 指标
- 新增动态配置重载
- 移除 ‘shard’ 相关逻辑
- 在默认设置中添加 ‘bulky’ 模式
https://github.com/pgsty/pg_exporter/releases/tag/v0.1.2
v0.1.1
修复 pg_exporter 在启动时如果任何查询失败会挂起的 Bug。
https://github.com/pgsty/pg_exporter/releases/tag/v0.1.1
v0.1.0
可以工作了,看起来不错。
https://github.com/pgsty/pg_exporter/releases/tag/v0.1.0
v0.0.4
在真实生产环境中测试了大约 2 周,200+ 节点。看起来不错!
https://github.com/pgsty/pg_exporter/releases/tag/v0.0.4
v0.0.3
v0.0.3 发布,在生产环境中测试
此版本已在生产环境中测试。
这个项目仍在快速发展中,如果您想在生产中使用,请谨慎尝试。
https://github.com/pgsty/pg_exporter/releases/tag/v0.0.3
v0.0.2
现在可以尝试了
https://github.com/pgsty/pg_exporter/releases/tag/v0.0.2
v0.0.1
新增 pgbouncer 模式