fastdbchkrep项目(数据库自动生成巡检报告) open source

fastdbchkrep 起源于我不想整理巡检报告的惰性需求,特意弄的一个工具。

经历了3个多月的功能开发和展示优化,目前已经满足了我的需求。

感兴趣的同学们也来一起尝试下。

github:https://github.com/iop07695432/fastdbchkrep



FastDBCheckRep

数据库巡检报告生成工具 - 让 DBA 专注于数据库分析而非报告格式化

📖 项目概述

核心定位

FastDBCheckRep 是一款数据库巡检和报告生成的工具包,旨在为数据库管理员(DBA)提供自动化、专业化的数据库健康检查和报告生成服务。

解决的问题

在企业级数据库管理领域,传统的数据库巡检工作面临以下挑战:

  • 数据收集复杂性:需要从多个系统层面(操作系统、数据库实例、存储等)收集大量指标数据
  • 报告格式化耗时:DBA 需要花费大量时间将技术数据转换为业务可读的专业报告
  • 一致性难以保证:手工报告容易出现格式不统一、遗漏关键信息等问题
  • 可视化要求提升:现代企业对数据可视化和图表展示的要求越来越高

核心理念

让 DBA 专注于数据库分析而非报告格式化

  • 自动化数据收集 → 解析 → 报告生成 → PDF 导出全流程
  • 标准化、专业化的报告输出,便于项目交付验收
  • 高质量的图表和可视化输出

目标用户

  • 数据库管理员(DBA)
  • 运维工程师
  • 技术咨询公司
  • 需要定期生成数据库巡检报告的企业

目标用户

  • 数据库管理员(DBA)
  • 运维工程师
  • 技术咨询公司
  • 需要定期生成数据库巡检报告的企业

✨ 功能特性

已完整实现的功能

Oracle 数据库支持(✅ 完整实现)

  • 单机模式(ONE):支持 Oracle 11g、12c、19c 非多租户版本
  • RAC 模式:支持 2-4 节点 Oracle RAC 集群
    • 自动合并多节点报告
    • 图片路径自动重写
    • 节点一致性验证
  • AWR 报告处理:高保真 HTML 截图(支持按 summary 文本灵活匹配截取 AWR 各章节)
  • 性能监控图表:CPU、内存、磁盘 I/O 趋势图(Matplotlib 生成)

MySQL 数据库支持(✅ 完整实现)

  • 单机模式(ONE):完整的 MySQL 巡检数据解析
  • 独立解析器:专用的 MySQL 元数据解析器

SQL Server 数据库支持(🚧 部分实现)

  • 版本支持:2005、2008、2012、2014、2016、2017、2019
  • 直接 TXT 解析:跳过 JSON 中间层,简化流程
  • 智能版本检测:通过版本字符串和提示语双重判断
  • 当前状态:解析器和报告生成器已实现,持续优化中

技术亮点

🎨 AWR HTML 截图解决方案(里程碑级创新)

  • 高保真截图:使用 Playwright 实现 AWR 报告的高质量截图
  • 自动化处理:无需手工截图和裁剪
  • 图片压缩优化:Pillow 压缩至 <200KB
  • 技术价值:将 AWR 报告处理时间从小时级降低到分钟级

📊 性能监控图表生成

  • CPU 使用率趋势图:user/system/iowait/idle 多维度展示
  • 内存使用率图表:双 Y 轴(百分比 + GB)
  • 磁盘 I/O 趋势图:读写性能可视化
  • 高质量输出:300 DPI,适合打印和展示

🔄 RAC 多节点支持

  • 支持 2-4 节点(不仅限于 2 节点)
  • 自动合并节点报告
  • 图片路径自动重写
  • 节点一致性验证

📦 二进制分发支持

  • PyInstaller 打包,无需 Python 环境即可运行
  • Playwright 浏览器可打包到二进制中
  • 适合客户现场部署
相关推荐
保定公民2 小时前
DMDRS数据库同步用户最小权限脚本示例
数据库·sql·达梦数据库·数据同步·dmdrs·同步权限
自燃人~3 小时前
怎么优化慢SQL
数据库·sql
不屈的铝合金4 小时前
SQL 语言概述与数据库核心前置配置了解
数据库·sql·mysql·约束·sql 语句分类·字符集配置·校对规则
萧曵 丶4 小时前
可重复读(Repeatable Read)隔离级别下幻读产生的原因
数据库·sql·mysql
·云扬·4 小时前
MySQL运维效率提升:实用SQL语句合集
运维·sql·mysql
白帽子黑客杰哥5 小时前
除了SQL注入,WAF绕过技术如何应用于XSS、文件上传等其他漏洞类型?
网络·sql·xss·漏洞挖掘
jnrjian5 小时前
Oracle 列A=列A 相当于列不为空,条件无意义
数据库·sql
J_liaty6 小时前
MySQL EXPLAIN 深度解析与 SQL 优化实战
数据库·sql·mysql
zgl_200537796 小时前
ZGLanguage 解析SQL数据血缘 之 提取子查询语句中的源表名
大数据·数据库·数据仓库·hive·hadoop·sql·etl
Knight_AL6 小时前
从 QueryWrapper 到 XML:一次「报表 SQL」的重构实践
xml·sql·重构