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 在参数组里改完同样要“重启实例”才能生效。
posted @ 2025-09-19 16:34  数据库小白(专注)  阅读(36)  评论(0)    收藏  举报