pg_datasentinel
Observability and activity monitoring extension for PostgreSQL
pg_datasentinel : Observability and activity monitoring extension for PostgreSQL
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 6400 | pg_datasentinel | pg_datasentinel | 1.0 |
STAT | BSD-3-Clause | C |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --sLd-- | No | Yes | Yes | Yes | no | no |
| Relationships | |
|---|---|
| See Also | pgsentinel pg_profile pg_stat_monitor pg_wait_sampling pg_stat_ch pgmonitor system_stats powa pgnodemx pg_stat_statements |
shared_preload_libraries = pg_datasentinel is required because the extension allocates shared memory and hooks into activity logging.
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0 |
18 17 16 15 14 | pg_datasentinel |
- |
| RPM | PIGSTY | 1.0 |
18 17 16 15 14 | pg_datasentinel_$v |
- |
| DEB | PIGSTY | 1.0 |
18 17 16 15 14 | postgresql-$v-pg-datasentinel |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| el8.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| el9.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| el9.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| el10.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| el10.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| d12.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| d12.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| d13.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| d13.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u22.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u22.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u24.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u24.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u26.x86_64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
| u26.aarch64 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | PIGSTY 1.0 | N/A |
Source
github.com/datasentinel/pg_datasentinel
pg_datasentinel-1.0.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Config this extension to shared_preload_libraries:
Create this extension with:
Usage
Source: README, Release 1.0
pg_datasentinel adds observability views on top of PostgreSQL activity, maintenance, temporary-file, checkpoint, wraparound, and container resource data. It must be preloaded because it allocates shared memory and hooks into activity logging.
Required setup
Main views
ds_stat_activity: extendspg_stat_activitywith backend RSS, optional PSS, temp-file bytes, andplan_idon PostgreSQL 18+.ds_container_resources: reports cgroup CPU and memory limits plus current usage.ds_wraparound_risk: estimates XID and MXID ETA to aggressive vacuum and wraparound from hourly snapshots.ds_xid_snapshots: raw snapshot history used byds_wraparound_risk.ds_vacuum_activity,ds_analyze_activity,ds_tempfile_activity,ds_checkpoint_activity: shared-memory ring buffers for maintenance and checkpoint events.ds_activity_summary: one-row summary of ring-buffer occupancy and timestamps.
Useful GUCs
pg_datasentinel.enabled: enables or disables capture.pg_datasentinel.max_entries: ring-buffer capacity per activity stream; restart required.pg_datasentinel.maintenance_force_verbose: addsVERBOSEto manualVACUUMandANALYZEso they are captured.pg_datasentinel.ignore_system_schemas: suppressespg_catalogandinformation_schemanoise.pg_datasentinel.enable_pss_memory: reads/proc/*/smaps_rollupfor per-backend PSS.
Caveats
- PostgreSQL 15+ is required upstream.
- Memory and temp-file enrichment depends on Linux
/proc; container metrics depend on cgroups. - Vacuum and analyze parsing depends on English log keywords, so translated server message locales are not fully supported.
plan_idis only populated on PostgreSQL 18+, and is most useful when paired with the officialpg_store_plansfork linked from the README.