pg_datasentinel

PostgreSQL 可观测性与活动监控扩展

概览

扩展包名版本分类许可证语言
pg_datasentinel1.0STATBSD-3-ClauseC
ID扩展名BinLibLoadCreateTrustReloc模式
6400pg_datasentinel-
相关扩展pgsentinel system_stats pg_profile pg_stat_monitor pg_stat_kcache powa

shared_preload_libraries = pg_datasentinel is required because the extension allocates shared memory and hooks into activity logging.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.01817161514pg_datasentinel-
RPMPIGSTY1.01817161514pg_datasentinel_$v-
DEBPIGSTY1.01817161514postgresql-$v-pg-datasentinel-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
el8.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
el9.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
el9.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
el10.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
el10.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
d12.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
d12.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
d13.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
d13.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u22.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u22.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u24.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u24.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u26.x86_64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS
u26.aarch64
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY 1.0
PIGSTY MISS

构建

您可以使用 pig build 命令构建 pg_datasentinel 扩展的 RPM / DEB 包:

pig build pkg pg_datasentinel         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_datasentinel 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_datasentinel;          # 当前活跃 PG 版本安装
pig ext install -y pg_datasentinel -v 18  # PG 18
pig ext install -y pg_datasentinel -v 17  # PG 17
pig ext install -y pg_datasentinel -v 16  # PG 16
pig ext install -y pg_datasentinel -v 15  # PG 15
dnf install -y pg_datasentinel_18       # PG 18
dnf install -y pg_datasentinel_17       # PG 17
dnf install -y pg_datasentinel_16       # PG 16
dnf install -y pg_datasentinel_15       # PG 15
apt install -y postgresql-18-pg-datasentinel   # PG 18
apt install -y postgresql-17-pg-datasentinel   # PG 17
apt install -y postgresql-16-pg-datasentinel   # PG 16
apt install -y postgresql-15-pg-datasentinel   # PG 15

预加载配置

shared_preload_libraries = 'pg_datasentinel';

创建扩展

CREATE EXTENSION pg_datasentinel;

用法

来源:READMERelease 1.0

pg_datasentinel 在 PostgreSQL 的 activity、maintenance、temporary-file、checkpoint、wraparound 与 container resource 数据之上提供可观测性视图。由于它会分配共享内存并挂接 activity logging,因此必须预加载。

所需设置

-- postgresql.conf
shared_preload_libraries = 'pg_datasentinel'
log_autovacuum_min_duration = 0
log_temp_files = 0
log_checkpoints = on

CREATE EXTENSION pg_datasentinel;

主要视图

  • ds_stat_activity:在 pg_stat_activity 基础上扩展 backend RSS、可选 PSS、temp-file bytes,以及 PostgreSQL 18+ 上的 plan_id
  • ds_container_resources:报告 cgroup CPU 与内存限制,以及当前使用量。
  • ds_wraparound_risk:基于每小时快照估算到 aggressive vacuum 与 wraparound 的 XID、MXID ETA。
  • ds_xid_snapshotsds_wraparound_risk 使用的原始快照历史。
  • ds_vacuum_activityds_analyze_activityds_tempfile_activityds_checkpoint_activity:用于维护与 checkpoint 事件的共享内存 ring buffer。
  • ds_activity_summary:返回 ring buffer 占用和时间戳的一行汇总。

常用 GUCs

  • pg_datasentinel.enabled:启用或禁用采集。
  • pg_datasentinel.max_entries:每类 activity stream 的 ring buffer 容量;修改后需要重启。
  • pg_datasentinel.maintenance_force_verbose:为手工 VACUUMANALYZE 添加 VERBOSE,以便被捕获。
  • pg_datasentinel.ignore_system_schemas:抑制 pg_cataloginformation_schema 噪声。
  • pg_datasentinel.enable_pss_memory:读取 /proc/*/smaps_rollup 以获取每个 backend 的 PSS。

注意事项

  • 上游要求 PostgreSQL 15+。
  • 内存与 temp-file 增强信息依赖 Linux /proc;container 指标依赖 cgroups。
  • VACUUMANALYZE 的解析依赖英文日志关键字,因此不完全支持已翻译的 server message locale。
  • plan_id 仅在 PostgreSQL 18+ 上填充,并且与 README 中链接的官方 pg_store_plans fork 搭配时最有价值。

最后修改 2026-05-01: update extension data (e399d22)