pg_glimpse —— 终端里的 PostgreSQL 监控仪表板
pg_glimpse —— 终端里的 PostgreSQL 监控仪表板
数据库性能问题往往在业务高峰时才暴露,而传统的监控方案要么太重,要么需要离开终端去查看 Web 界面。pg_glimpse 提供了一个更轻量的选择:一个运行在终端里的 PostgreSQL 实时监控仪表板。
项目概览
| 属性 | 详情 |
|---|---|
| GitHub | dlt/pg_glimpse |
| Stars | 83 |
| 语言 | Rust |
| 许可证 | MIT |
核心功能
pg_glimpse 用 Rust 和 Ratatui 构建,提供了数据库管理员最需要的几项监控能力:
实时查询监控
- 显示当前正在执行的查询
- 查看查询执行时间和状态
- 识别长时间运行的查询
锁分析
- 检测表级锁和行级锁
- 发现阻塞查询和死锁
- 追踪锁等待链
复制状态
- 监控主从复制延迟
- 查看复制槽状态
- 追踪 WAL 发送/接收进度
性能指标
- 连接数统计
- 事务吞吐量
- 缓存命中率
安装与使用
# 克隆仓库
git clone https://github.com/dlt/pg_glimpse.git
cd pg_glimpse
# 编译(需要 Rust 工具链)
cargo build --release
# 运行(通过环境变量连接数据库)
DATABASE_URL="postgres://user:password@localhost/dbname" ./target/release/pg_glimpse
界面布局
┌─────────────────────────────────────────────────────────┐
│ pg_glimpse - PostgreSQL Dashboard [?] │
├─────────────────────────────────────────────────────────┤
│ [Queries] [Locks] [Replication] [Stats] │
├─────────────────────────────────────────────────────────┤
│ PID │ USER │ DB │ STATE │ TIME │ QUERY │
├──────┼───────┼───────┼─────────┼───────┼────────────────┤
│ 1234 │ app │ prod │ active │ 2.3s │ SELECT ... │
│ 1235 │ app │ prod │ idle │ 0.1s │ COMMIT │
│ 1236 │ admin │ stats │ active │ 15.2s │ ANALYZE ... │
└─────────────────────────────────────────────────────────┘
使用场景
| 场景 | 用法 |
|---|---|
| 排查慢查询 | 切换到 Queries 标签,按时间排序 |
| 检查锁竞争 | 查看 Locks 标签,识别阻塞源 |
| 监控复制延迟 | 切换到 Replication 面板 |
| 快速健康检查 | Stats 标签查看核心指标 |
与类似工具对比
| 工具 | 特点 | 适用场景 |
|---|---|---|
| pg_glimpse | 轻量、终端原生、实时 | 开发调试、快速诊断 |
| pgAdmin | 功能全面、图形界面 | 日常管理、复杂操作 |
| pgbadger | 报告生成、历史分析 | 事后分析、趋势报告 |
| pg_stat_statements | 内置统计、精确数据 | 长期监控、优化依据 |
技术亮点
- 纯 Rust 实现:无 Python 依赖,单二进制文件
- Ratatui 框架:流畅的终端 UI 体验
- 低资源占用:适合在服务器上长期运行
- 安全连接:支持标准 PostgreSQL 连接字符串
适合谁用
- 需要在 SSH 会话中快速查看数据库状态的运维人员
- 希望在开发环境实时监控查询的开发者
- 偏好终端工作流、不想打开浏览器的 DBA
总结
pg_glimpse 填补了 PostgreSQL 监控工具的一个空白:比 psql + \watch 更直观,比完整监控栈更轻量。对于经常需要在终端里排查数据库问题的开发者来说,这是一个值得加入工具箱的小工具。