21.postgreSQL的监控工具pgcenter简介
postgreSQL的监控工具pgcenter简介
pgNow:一款免费的PostgreSQL监控与性能诊断工具
下载安装
pgNow 官方下载网址如下:
https://www.red-gate.com/products/redgate-pgnow/installer/
官方文档:
https://documentation.red-gate.com/pgnow
一 pgcenter简介
pgcenter是一个用于观察和追踪PostgreSQL数据库故障的命令行管理工具。
pgcenter主要处理统计数据,并提供一种在运行时观察PostgreSQL数据库的便捷方式。
pgCenter 是一款用 Go 写的开源命令行工具,定位是“PostgreSQL 版的 top”。它把 PostgreSQL 内置的统计视图(pg_stat_activity、pg_stat_database、pg_stat_replication 等)和系统级指标(CPU、内存、I/O)整合成一块实时刷新的字符界面,让 DBA 在一张屏里就能看到数据库“现在到底在忙什么”。
主要能力可以归结为五类:
-
1.实时监控(top)
- 类似 Linux top,按 ↑/↓ 切换标签页,可查看:
- 实例级:连接数、TPS、QPS、读写带宽、临时文件、vacuum 进度
- 库级:块读写、缓存命中率、死锁、冲突、临时文件
- 表级/索引级:顺序/随机扫描、热块更新、vacuum 次数、大小
- 会话级:当前 SQL、等待事件、锁、开始时间、客户端地址
- 复制级:备库延迟、LSN 差距、流复制状态
- 支持远程连接,也支持只读账号(只要给它 grant select on pg_stat_* 视图即可)。
-
2.等待事件分析(profile)
对一条慢 SQL 做秒级采样,把 wait event 按出现次数倒排,一眼看出是锁等、I/O 还是 LWLock。
轻量级历史留存(record + report) -
3.没有 Prometheus 也能“穷监控”:
pgcenter record -f /data/stats.dump 会每秒把统计视图快照到本地文件,事后 pgcenter report -f stats.dump 直接生成 TSV/CSV 或文本汇总,方便插到 Excel 或 Grafana 做二次分析。 -
4.配置与日志快捷入口
在 top 界面按 c 可直接跳转到 postgresql.conf 编辑,改完提示 reload;按 l 能 tail -f 日志,不用再开第二个终端。 -
5.零侵入安装
默认只读查询,不写数据库;如果想看语句级统计,再跑 pgcenter config install 创建一个 6 张表的小 schema(pgcenter_stats)即可,卸载时 config uninstall 一键清掉。
二 pgcenter部署
(以 CentOS 7/8、PostgreSQL 15 为例,其他 Linux 同理)
1.下载二进制
官网 GitHub release 已提供静态编译包,免依赖:
curl -L -o pgcenter.tar.gz https://github.com/lesovsky/pgcenter/releases/download/v0.9.2/pgcenter_0.9.2_linux_amd64.tar.gz
$ tar zxvf pgcenter_0.9.2_linux_amd64.tar.gz
或者:tar -zxzf pgcenter.tar.gz -C /usr/local/bin/
$ chmod 755 pgcenter
$ ./pgcenter --version
2.建个只读账号(可选但推荐)
CREATE USER monitor WITH PASSWORD 'mon@2025';
GRANT pg_monitor TO monitor; -- 9.6+ 专用角色,一次性给所有统计视图权限
3.直接开 top
pgcenter top -h 127.0.0.1 -p 5432 -U monitor -d postgres
进来后按 F1 看快捷键,按 q 退出。
4.录一段历史
pgcenter record -f /tmp/a.dump -d postgres -U monitor
录 30 秒后 Ctrl-C 停止,再生成报告:
pgcenter report -f /tmp/a.dump --format=csv -o /tmp/a.csv
三、pgcenter top常用指令
h,F1 查看帮助
q,‘ESC’,‘Ctrl+Q’ 退出
z 设置刷新间隔,默认是1秒,可调范围是1到300
Q 重置数据库统计信息
‘-’ 中划线符号,输入pid,取消查询,相当于调用pg_cancel_backend函数
‘_’ 下划线符号,输入pid,取消查询,相当于调用pg_terminate_backend函数
B 同时查看磁盘信息,交替按会取消。
N 同时查看网络接口信息,交替按会取消。
L 查看数据库日志尾部行 l 查看数据库的日志信息,翻页形式
‘~’ 打开psql会话,\q退出到pgcenter界面
C、E、R 显示、编辑、重载PG配置参数
a、d、f、r 活动连接信息, 数据库信息, 函数信息, 流复制信息
s、t、i 分别显示表大小、表统计信息、索引统计信息
x、X 小写x交替显示不同维度pg_stat_statements信息,大写X下拉选取pg_stat_statements 菜单
p、P 小写p交替显示pg_statprogress信息,大写P下拉选取pg_statprogress菜单
Up、Down 上下键调整列的宽度
Left,Right,<,/ 左右键选择列, 左方括号交替排序, '/'过滤
pgcenter top命令监控(默认是一秒刷新一次)
pgcenter top -h 127.0.0.1 -U postgres -d kingdee -p 5432
按下“ctrl+c”结束监控
四、常见场景速查
- 连接暴涨:top → Sessions 页,看 client_addr、state、query 列,找到 idle in transaction 的 IP,直接 kill 或通知业务。
- 复制延迟:top → Replication 页,看 replay_lag 列;超过阈值可切到 profile 对 replay 进程做等待事件采样。
- 慢查询无索引:top → Tables 页,seq_scan 远大于 idx_scan,再切到 Statements 页找对应表上的 query,即可确认。
- 临时文件突增:top → Databases 页,temp_files 列每秒跳动,结合 Statements 页看哪条 SQL 用了大量 work_mem。
pgCenter 把 PostgreSQL 原本散落在几十张统计视图的指标聚合成“一块屏”,远程、低权限、零依赖,既能当场揪出慢 SQL,也能 dump 下来事后复盘,是每位 DBA 工具箱里的“瑞士军刀”。如果你还没试过,3 分钟装完连进去按几下方向键,相信你会立刻爱上它。
pg_center 启用前置条件
shared_preload_libraries 是“逗号分隔的列表”,只要把两个(或多个)模块写在一行里,用英文逗号隔开即可,不会冲突。
因此同时启用 repmgr 和 pg_stat_statements 的正确姿势只有一句话:
shared_preload_libraries = 'repmgr,pg_stat_statements' # 顺序无关,逗号分隔即可
改完 必须重启 PostgreSQL 实例,然后在需要的数据库里执行:
CREATE EXTENSION pg_stat_statements;
即可满足 pgCenter 对 pg_stat_statements 的依赖,同时 repmgr 也能正常加载。
如果还有其它模块,同样继续往列表里追加即可,例如:
shared_preload_libraries = 'repmgr,pg_stat_statements,auto_explain'
常见踩坑提醒
- 1.写成两行,后一行会覆盖前一行,导致看上去“冲突”。
- 2.模块名拼错、逗号用了中文,重启后会报 “could not access file” 直接起不来。
- 3.云 RDS 在参数组里改完同样要“重启实例”才能生效。

浙公网安备 33010602011771号