内置采集器

PG Exporter 内置 58 个采集器定义文件的完整清单、前置条件与运维建议

PG Exporter v1.4.1 在 config/ 中提供 58 个采集器定义文件make conf 按文件名顺序将它们合并为默认的 pg_exporter.yml

文件名前缀只负责排序,并不是指标名。一个文件可以为同一指标命名空间定义多个版本或角色分支。PG Exporter 启动时根据目标实例事实只安装符合条件的分支;对真实目标访问 GET /explain,即可查看最终执行计划。

编号分区

范围 领域 典型范围
0000 编写参考 YAML 模式与示例,不会安装为采集器
0100 身份与设置 实例身份、元数据、配置容量上限
0200 复制 发送端、接收端、复制槽、订阅、复制源
0300 实例内部 I/O、存储、检查点、恢复、SLRU、共享内存
0400 工作负载 WAL、会话、等待、事务、锁、查询统计
0500 进度 VACUUM、建索引、聚簇、基础备份进度
0600 数据库与逻辑复制 数据库计数、冲突、发布与订阅状态
0700 关系对象 表、索引、函数、序列、分区
0800 高开销关系分析 对象大小与膨胀
0900 PgBouncer 列表、数据库、统计、连接池
1000+ 可选集成 等待采样、TimescaleDB、Citus、心跳

完整清单

文件 命名空间 范围与前置条件
0000-doc.yml 配置参考 YAML 模式与采集器编写指南,不会被安装
0110-pg.yml pg 实例基础信息,区分主库与从库分支
0120-pg_meta.yml pg_meta 集群元数据;PG13+ 包含 primary_conninfo
0130-pg_setting.yml pg_setting 共享参数与容量上限
0210-pg_repl.yml pg_repl 复制发送端统计
0220-pg_sync_standby.yml pg_sync_standby 同步备库状态
0230-pg_downstream.yml pg_downstream 下游复制客户端数量
0240-pg_slot.yml pg_slot 复制槽;PG16+ 支持备库,PG19 支持新的失效原因
0250-pg_recv.yml pg_recv 备库 WAL 接收器;支持 PG19 connecting 状态
0260-pg_sub.yml pg_sub 订阅统计;PG19 同步错误与冲突计数
0270-pg_origin.yml pg_origin 复制源状态;默认禁用,可能需要额外权限
0300-pg_io.yml pg_io PG16+ 的 pg_stat_io,含 PG18+ 分支
0310-pg_size.yml pg_size 数据库、WAL 与日志大小
0320-pg_archiver.yml pg_archiver 归档进程统计
0330-pg_bgwriter.yml pg_bgwriter 后台写进程统计,包含 PG17+ 分支
0331-pg_checkpointer.yml pg_checkpointer 检查点进程统计;PG18+ 完成量与 SLRU 计数
0340-pg_ssl.yml pg_ssl SSL 客户端连接数量
0350-pg_checkpoint.yml pg_checkpoint 检查点控制信息
0355-pg_timeline.yml pg_timeline 主库或备库的当前时间线 ID
0360-pg_recovery.yml pg_recovery, pg_recovery_prefetch 备库恢复与恢复预取统计
0370-pg_recovery_state.yml pg_recovery_state PG19 备库 pg_stat_recovery 恢复状态
0380-pg_slru.yml pg_slru PG13+ SLRU 缓存统计
0390-pg_shmem.yml pg_shmem 共享内存分配;默认禁用,要求 schema:monitor
0400-pg_wal.yml pg_wal PG14+ WAL 统计;PG19 增加全页写字节计数
0410-pg_activity.yml pg_activity 按数据库与状态统计后端连接
0420-pg_wait.yml pg_wait 按等待事件类型统计后端等待
0430-pg_backend.yml pg_backend backend_type 汇总后端进程
0440-pg_xact.yml pg_xact 事务快照边界与活跃事务数量
0450-pg_xact_age.yml pg_xact_age PG10+ 各数据库活跃/空闲事务年龄直方图
0460-pg_lock.yml pg_lock 按数据库与模式统计锁分布
0470-pg_lock_stat.yml pg_lock_stat PG19 全局锁等待与快速路径溢出计数
0480-pg_query.yml pg_query 查询统计;要求 extension:pg_stat_statements
0510-pg_vacuuming.yml pg_vacuuming 仅主库的 VACUUM 进度;PG18+ 包含 delay_time
0520-pg_indexing.yml pg_indexing 仅主库的 CREATE INDEX 进度
0530-pg_clustering.yml pg_clustering 仅主库的 CLUSTERVACUUM FULL 进度
0540-pg_backup.yml pg_backup PG13+ 基础备份进度
0610-pg_db.yml pg_db 各数据库统计;PG18+ 并行工作进程计数
0620-pg_db_confl.yml pg_db_confl 备库数据库冲突计数
0640-pg_pubrel.yml pg_pubrel 发布与发布关系数量
0650-pg_subrel.yml pg_subrel 按状态汇总订阅关系
0660-pg_vacuum_score.yml pg_vacuum_score PG19 pg_stat_autovacuum_scores 自动清理评分摘要
0700-pg_table.yml pg_table 每表统计;PG18+ 维护时间与新页面更新计数
0710-pg_index.yml pg_index 每索引统计
0720-pg_func.yml pg_func 函数执行统计
0730-pg_seq.yml pg_seq 序列指标
0740-pg_relkind.yml pg_relkind 按关系类型统计对象数量
0750-pg_defpart.yml pg_defpart 默认分区元组数量
0810-pg_table_size.yml pg_table_size 每表大小;在超大模式中可能较慢
0820-pg_table_bloat.yml pg_table_bloat 默认禁用;要求辅助视图 pg_table_bloat
0830-pg_index_bloat.yml pg_index_bloat 默认禁用;要求辅助视图 pg_index_bloat
0910-pgbouncer_list.yml pgbouncer_list 从管理数据库获取 PgBouncer 列表指标
0920-pgbouncer_database.yml pgbouncer_database PgBouncer 数据库指标,含版本分支
0930-pgbouncer_stat.yml pgbouncer_stat PgBouncer 各数据库统计,含版本分支
0940-pgbouncer_pool.yml pgbouncer_pool PgBouncer 连接池指标,含版本分支
1000-pg_wait_event.yml pg_wait_event, pg_wait_event_1s 等待事件采样;要求 extension:pg_wait_sampling
1800-pg_tsdb_hypertable.yml pg_tsdb_hypertable 默认禁用;要求 TimescaleDB 及其信息模式
1900-pg_citus.yml pg_citus_node Citus 工作节点/协调节点清单;要求 extension:citus
2000-pg_heartbeat.yml pg_heartbeat 默认禁用;要求 postgres 库中的 monitor 心跳表

启用前先看计划

不要把 58 个文件理解成 58 条无条件执行的查询。规划器会根据 PostgreSQL 或 PgBouncer 版本、恢复角色、目标数据库、扩展、模式、用户名与谓词结果筛选分支。调优前先检查真实计划:

curl -fsS http://127.0.0.1:9630/explain
curl -fsS http://127.0.0.1:9630/explain | jq '.[] | {name, status, reason}'

默认禁用的采集器必须经过有意识的审核。pg_originpg_shmem、两个膨胀采集器、TimescaleDB 采集器和 pg_heartbeat 都需要额外权限、辅助对象、特定扩展或明确的写入/读取流程,因此不会进入通用默认计划。

基数与开销

每对象和每查询采集器是主要的基数来源。在大规模环境中启用前重点检查:

  • pg_tablepg_indexpg_funcpg_seq 会为每个对象产生一组或多组时序。
  • pg_query 的规模随 pg_stat_statements 保留的归一化语句数量增长。
  • pg_table_sizepg_table_bloatpg_index_bloat 在关系很多时可能成本较高。
  • 等待事件采样依赖扩展,并可能产生随负载变化的维度。

用采集器 ttl 缓存高成本结果,设置符合实际的单采集器 timeout,并让抓取间隔大于最慢采集器的预期耗时。变更前后都应比较 /metrics 的耗时与时序数量,不能只凭“配置验证通过”判断生产安全性。

安全定制

把本地覆盖放在独立配置目录中,不要直接修改生成的单体文件。只复制最小相关文件,确保所有顶层分支名全局唯一、版本范围不重叠,然后执行:

pg_exporter --config=/path/to/collectors --dry-run
PG_EXPORTER_CONFIG=/path/to/collectors pg_exporter
curl -fsS http://127.0.0.1:9630/explain
curl -fsS http://127.0.0.1:9630/metrics >/dev/null

采集器模式、查询到指标的映射、标签、谓词、缓存、超时与直方图规则详见采集器配置