pg_jobmon

记录和监控函数

概览

扩展包名版本分类许可证语言
pg_jobmon1.4.1SECPostgreSQLSQL
ID扩展名BinLibLoadCreateTrustReloc模式
7160pg_jobmon-
相关扩展dblink pg_cron pg_task pgagent pg_background logerrors bgw_replstatus pgauditlogtofile pg_auth_mon

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED1.4.11817161514pg_jobmondblink
RPMPGDG1.4.11817161514pg_jobmon_$v-
DEBPIGSTY1.4.11817161514postgresql-$v-pg-jobmon-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
PGDG 1.4.1
PGDG 1.4.1
PGDG 1.4.1
el9.x86_64
el9.aarch64
PGDG 1.4.1
PGDG 1.4.1
PGDG 1.4.1
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
d13.aarch64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
u22.x86_64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
u22.aarch64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
u24.x86_64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
u24.aarch64
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1
PIGSTY 1.4.1

构建

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

pig build pkg pg_jobmon         # 构建 DEB 包

安装

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

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

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

pig install pg_jobmon;          # 当前活跃 PG 版本安装
pig ext install -y pg_jobmon -v 18  # PG 18
pig ext install -y pg_jobmon -v 17  # PG 17
pig ext install -y pg_jobmon -v 16  # PG 16
pig ext install -y pg_jobmon -v 15  # PG 15
pig ext install -y pg_jobmon -v 14  # PG 14
dnf install -y pg_jobmon_18       # PG 18
dnf install -y pg_jobmon_17       # PG 17
dnf install -y pg_jobmon_16       # PG 16
dnf install -y pg_jobmon_15       # PG 15
dnf install -y pg_jobmon_14       # PG 14
apt install -y postgresql-18-pg-jobmon   # PG 18
apt install -y postgresql-17-pg-jobmon   # PG 17
apt install -y postgresql-16-pg-jobmon   # PG 16
apt install -y postgresql-15-pg-jobmon   # PG 15
apt install -y postgresql-14-pg-jobmon   # PG 14

创建扩展

CREATE EXTENSION pg_jobmon CASCADE;  -- 依赖: dblink

用法

pg_jobmon: PostgreSQL 自主作业日志和监控

pg_jobmon 为 PostgreSQL 事务和函数提供自主(非事务性)日志记录。如果函数失败,到该时间点为止写入的所有日志信息都会被保留,而不会被回滚。

CREATE SCHEMA jobmon;
CREATE EXTENSION pg_jobmon SCHEMA jobmon;

初始化

该扩展使用 dblink 回连到同一数据库(用于非事务性日志记录)。添加凭证:

INSERT INTO jobmon.dblink_mapping_jobmon (username, pwd) VALUES ('rolename', 'rolepassword');

非标准端口:

INSERT INTO jobmon.dblink_mapping_jobmon (host, username, pwd, port)
VALUES ('localhost', 'rolename', 'rolepassword', '5999');

核心日志函数

-- 开始新作业
SELECT jobmon.add_job('My Job Name');

-- 向作业添加步骤
SELECT jobmon.add_step(job_id, 'Step description');

-- 更新步骤状态
SELECT jobmon.update_step(step_id, 'OK', 'Step completed successfully');
SELECT jobmon.update_step(step_id, 'WARNING', 'Something unexpected');

-- 关闭作业
SELECT jobmon.close_job(job_id);

-- 或标记作业失败
SELECT jobmon.fail_job(job_id);

监控函数

-- 检查失败的作业
SELECT * FROM jobmon.check_job_status();

-- 查看作业历史
SELECT * FROM jobmon.job_log ORDER BY start_time DESC;

-- 查看步骤详情
SELECT * FROM jobmon.job_detail WHERE job_id = 123;

自主日志记录确保即使父事务回滚,作业日志条目也会被保留以便排障。


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