内置采集器
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 |
仅主库的 CLUSTER 与 VACUUM 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_origin、pg_shmem、两个膨胀采集器、TimescaleDB 采集器和 pg_heartbeat 都需要额外权限、辅助对象、特定扩展或明确的写入/读取流程,因此不会进入通用默认计划。
基数与开销
每对象和每查询采集器是主要的基数来源。在大规模环境中启用前重点检查:
pg_table、pg_index、pg_func、pg_seq会为每个对象产生一组或多组时序。pg_query的规模随pg_stat_statements保留的归一化语句数量增长。pg_table_size、pg_table_bloat、pg_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
采集器模式、查询到指标的映射、标签、谓词、缓存、超时与直方图规则详见采集器配置。