打开网易新闻 查看精彩图片

摘要:针对DBA运维PostgreSQL时面临的传统工具交互晦涩、性能瓶颈定位困难等痛点,本文介绍了一套基于Python Flask构建的轻量级可视化监控系统。系统集成了实时性能大盘、长事务与锁分析、WAL日志监控、表膨胀预警、SQL诊断及SQL查询界面六大核心功能。后端采用Flask框架,前端结合Bootstrap构建直观界面并支持HTTPS安全访问。通过直连PG系统视图实现数据实时采集,文章附带完整代码与部署脚本,助力运维人员快速搭建监控平台,推动数据库管理从被动响应向主动预防转型,实测显著提升运维效率。

详细内容请参考下文。

一、系统概述

1.PostgreSQL介绍

PostgreSQL(通常简称为Postgres)是一个功能强大的开源对象-关系型数据库系统。它以其稳定性数据完整性标准兼容性著称,被广泛应用于各种规模的企业级应用中。目前在国家自主创新的战略背景下,多款国产数据库(如华为GaussDB、人大金仓KingbaseES、海量数据Vastbase、瀚高HighGoDB等等)都是基于PostgreSQL或在其衍生版本上开发,加速了PostgreSQL技术路线在国内政企市场的落地。

2. PostgreSQL可视化监控系统

本系统的核心功能时实现实时性能大盘、长事务与锁分析、WAL日志监控、表膨胀预警、SQL诊断及SQL查询界面六大功能,全面覆盖PostgreSQL运维从宏观健康感知到微观问题定位再到交互式数据操作的监控闭环。其详细功能如下:

(1)实时性能大盘:秒级展示TPS、QPS、缓存命中率、活跃连接数等关键指标,仪表板直观反映数据库健康状态。

(2)长事务与锁分析:自动识别长事务及锁等待链,支持一键终止阻塞会话,快速解除锁冲突。

(3)WAL日志监控:实时监测WAL(Write-Ahead Log)生成速率、归档延迟及磁盘占用,超阈值自动预警。

(4)表膨胀预警:定期计算表膨胀率,识别异常表并提供VACUUM/REINDEX优化建议。

(5)SQL诊断:基于pg_stat_statements统计慢SQL,按耗时排序并关联执行计划,辅助性能调优。

(6)SQL查询:提供Web端SQL执行终端,支持语法高亮、结果集分页导出、执行计划可视化及操作权限控制。

二、系统数据库和数据表

执行数据库初始化指令在本地的Mysql中创建pg_monitor_system数据库和PG数据库资源监控表pg_performance_metrics等11个数据表。详细情况如下

1.进行数据库初始化

打开网易新闻 查看精彩图片

2.查看初始化后的数据库和数据表

打开网易新闻 查看精彩图片

三、系统目录结构和核心代码

PostgreSQL智能监控系统是一款专为数据库运维人员设计的监控平台,基于Flask框架开发,采用现代化的UI设计(深蓝+鎏金+白色配色方案),为您提供全面的PostgreSQL数据库监控能力。系统的目录结构及相关核心代码如下

1.目录结构

打开网易新闻 查看精彩图片

2.核心程序代码

(1) config.py - 配置文件

打开网易新闻 查看精彩图片

(2)models.py - 数据模型

打开网易新闻 查看精彩图片

(3)forms.py - 表单定义

打开网易新闻 查看精彩图片

(4)app.py - 主程序(核心监控逻辑)

打开网易新闻 查看精彩图片

(5)templates/base.html - 基础模板

打开网易新闻 查看精彩图片

(6)templates/index.html - 首页(实时性能大盘)

打开网易新闻 查看精彩图片

四、系统的部署与运行

1.生成HTTPS证书

执行指令# openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

2.启动系统

执行指令# python3 run.py启动系统

打开网易新闻 查看精彩图片

3.访问系统

(1)通过IP地址访问系统,访问系统首页。如下图

打开网易新闻 查看精彩图片

(2)选择【事务锁分析】菜单分析事务锁信息。如下图

打开网易新闻 查看精彩图片

(3)选择【WAL监控】菜单查看WAL监控日志信息。如下图

打开网易新闻 查看精彩图片

(4)选择【表膨胀预警】菜单查看表膨胀预警信息。如下图

打开网易新闻 查看精彩图片

(5)选择【SQL诊断】菜单进行SQL语句诊断。如下图

打开网易新闻 查看精彩图片

(6)选择【SQL查询】菜单访问SQL查询终端。如下图

打开网易新闻 查看精彩图片

(7)选择【告警】菜单查看告警信息。如下图

打开网易新闻 查看精彩图片

(8)选择【帮助】菜单查看使用帮助信息。如下图

打开网易新闻 查看精彩图片

互动与分享

如果本文对您有帮助,欢迎:

1.点赞或在看,让我知道您的认可。

2.留言说说您最感兴趣的模块或任何建议。

3.转发分享给您的技术团队或社区朋友,共同提升运维效率。