pgnodemx

Capture node OS metrics via SQL queries

Overview

PackageVersionCategoryLicenseLanguage
pgnodemx1.7STATApache-2.0C
IDExtensionBinLibLoadCreateTrustRelocSchema
6440pgnodemxNoYesNoYesNoYes-
6450pg_proctabNoYesNoYesNoYes-
Relatedsystem_stats pg_wait_sampling pgsentinel pgmeminfo pgfincore prioritize pg_buffercache

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY1.71817161514pgnodemx-
RPMPIGSTY1.71817161514pgnodemx_$v-
DEBPIGSTY1.71817161514postgresql-$v-pgnodemx-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

Build

You can build the RPM / DEB packages for pgnodemx using pig build:

pig build pkg pgnodemx         # build RPM / DEB packages

Install

You can install pgnodemx directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pgnodemx;          # Install for current active PG version
pig ext install -y pgnodemx -v 18  # PG 18
pig ext install -y pgnodemx -v 17  # PG 17
pig ext install -y pgnodemx -v 16  # PG 16
pig ext install -y pgnodemx -v 15  # PG 15
pig ext install -y pgnodemx -v 14  # PG 14
dnf install -y pgnodemx_18       # PG 18
dnf install -y pgnodemx_17       # PG 17
dnf install -y pgnodemx_16       # PG 16
dnf install -y pgnodemx_15       # PG 15
dnf install -y pgnodemx_14       # PG 14
apt install -y postgresql-18-pgnodemx   # PG 18
apt install -y postgresql-17-pgnodemx   # PG 17
apt install -y postgresql-16-pgnodemx   # PG 16
apt install -y postgresql-15-pgnodemx   # PG 15
apt install -y postgresql-14-pgnodemx   # PG 14

Create Extension:

CREATE EXTENSION pgnodemx;

Usage

pgnodemx: SQL functions to access node OS metrics from PostgreSQL

pgnodemx provides SQL access to OS-level metrics including cgroup statistics, /proc filesystem data, and system information. Requires pg_monitor role membership.

cgroup Functions

-- Check cgroup support status
SELECT current_setting('pgnodemx.cgroup_enabled');
SELECT cgroup_mode();  -- 'legacy', 'unified', 'hybrid', or 'disabled'

-- Read cgroup scalar values
SELECT cgroup_scalar_bigint('memory.current');
SELECT cgroup_scalar_float8('cpu.uclamp.max');
SELECT cgroup_scalar_text('cgroup.type');

-- Read cgroup key-value files
SELECT * FROM cgroup_setof_kv('memory.stat');
SELECT * FROM cgroup_setof_kv('cpu.stat');

-- Read cgroup nested key-value files
SELECT * FROM cgroup_setof_nkv('memory.pressure');
SELECT * FROM cgroup_setof_nkv('cpu.pressure');

-- Get cgroup paths and process count
SELECT * FROM cgroup_path();
SELECT cgroup_process_count();

/proc Functions

SELECT * FROM proc_diskstats();       -- /proc/diskstats
SELECT * FROM proc_mountinfo();       -- /proc/self/mountinfo
SELECT * FROM proc_meminfo();         -- /proc/meminfo
SELECT * FROM proc_network_stats();   -- /proc/self/net/dev
SELECT * FROM proc_pid_io();          -- /proc/<pid>/io for all PG processes
SELECT * FROM proc_pid_cmdline();     -- command line for all PG processes
SELECT * FROM proc_pid_stat();        -- /proc/<pid>/stat for all PG processes
SELECT * FROM proc_cputime();         -- first line of /proc/stat
SELECT * FROM proc_loadavg();         -- /proc/loadavg

System Information

SELECT * FROM fsinfo('/pgdata');      -- filesystem info for a path
SELECT fips_mode();                   -- OpenSSL FIPS mode status
SELECT openssl_version();             -- OpenSSL version
SELECT exec_path();                   -- current PostgreSQL executable path
SELECT kpages_to_bytes(1024);         -- convert kernel pages to bytes
SELECT * FROM stat_file('/path');     -- file uid, gid, mode info

Environment Variables

SELECT envvar_text('PGDATA');
SELECT envvar_bigint('PGPORT');

Kubernetes DownwardAPI

SELECT * FROM kdapi_setof_kv('labels');
SELECT kdapi_scalar_bigint('cpu_limit');

Configuration

ParameterDefaultDescription
pgnodemx.cgroup_enabledonEnable cgroup functions
pgnodemx.containerizedoffForce containerized cgroup paths
pgnodemx.cgrouproot/sys/fs/cgroupcgroup mount location
pgnodemx.kdapi_enabledonEnable Kubernetes DownwardAPI
pgnodemx.kdapi_path/etc/podinfoDownwardAPI files location

Last Modified 2026-03-12: add pg extension catalog (95749bf)