pgnodemx

使用SQL查询获取操作系统指标

概览

扩展包名版本分类许可证语言
pgnodemx1.7STATApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
6440pgnodemx-
6450pg_proctab-
相关扩展system_stats pg_wait_sampling pgsentinel pgmeminfo pgfincore prioritize pg_buffercache

版本

类型仓库版本PG 大版本包名依赖
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

构建

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

pig build pkg pgnodemx         # 构建 RPM / DEB 包

安装

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

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

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

pig install pgnodemx;          # 当前活跃 PG 版本安装
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

预加载配置

shared_preload_libraries = 'pgnodemx';

创建扩展

CREATE EXTENSION pgnodemx;

用法

pgnodemx: 从 PostgreSQL 通过 SQL 访问节点操作系统指标

pgnodemx 提供 SQL 访问操作系统级指标的能力,包括 cgroup 统计、/proc 文件系统数据和系统信息。需要 pg_monitor 角色成员身份。

cgroup 函数

-- 检查 cgroup 支持状态
SELECT current_setting('pgnodemx.cgroup_enabled');
SELECT cgroup_mode();  -- 'legacy'、'unified'、'hybrid' 或 'disabled'

-- 读取 cgroup 标量值
SELECT cgroup_scalar_bigint('memory.current');
SELECT cgroup_scalar_float8('cpu.uclamp.max');
SELECT cgroup_scalar_text('cgroup.type');

-- 读取 cgroup 键值文件
SELECT * FROM cgroup_setof_kv('memory.stat');
SELECT * FROM cgroup_setof_kv('cpu.stat');

-- 读取 cgroup 嵌套键值文件
SELECT * FROM cgroup_setof_nkv('memory.pressure');
SELECT * FROM cgroup_setof_nkv('cpu.pressure');

-- 获取 cgroup 路径和进程数
SELECT * FROM cgroup_path();
SELECT cgroup_process_count();

/proc 函数

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();          -- 所有 PG 进程的 /proc/<pid>/io
SELECT * FROM proc_pid_cmdline();     -- 所有 PG 进程的命令行
SELECT * FROM proc_pid_stat();        -- 所有 PG 进程的 /proc/<pid>/stat
SELECT * FROM proc_cputime();         -- /proc/stat 的第一行
SELECT * FROM proc_loadavg();         -- /proc/loadavg

系统信息

SELECT * FROM fsinfo('/pgdata');      -- 路径的文件系统信息
SELECT fips_mode();                   -- OpenSSL FIPS 模式状态
SELECT openssl_version();             -- OpenSSL 版本
SELECT exec_path();                   -- 当前 PostgreSQL 可执行文件路径
SELECT kpages_to_bytes(1024);         -- 将内核页转换为字节
SELECT * FROM stat_file('/path');     -- 文件的 uid、gid、mode 信息

环境变量

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

Kubernetes DownwardAPI

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

配置

参数默认值描述
pgnodemx.cgroup_enabledon启用 cgroup 函数
pgnodemx.containerizedoff强制使用容器化 cgroup 路径
pgnodemx.cgrouproot/sys/fs/cgroupcgroup 挂载位置
pgnodemx.kdapi_enabledon启用 Kubernetes DownwardAPI
pgnodemx.kdapi_path/etc/podinfoDownwardAPI 文件位置

最后修改 2026-03-14: update extension metadata (953cbd0)