KingbaseES 数据库智能巡检工具

KingbaseES 数据库智能巡检工具



一键生成 KingbaseES 数据库健康巡检报告(Word 格式),支持单机/批量巡检、系统资源采集、性能分析、安全检测等 30+ 项核心指标。

📖 简介

本工具是对 KingbaseES 官方 check_db.sh 脚本的 Python 重写与增强,通过执行 SQL 采集数据库状态、配置、性能、对象统计等信息,并自动生成结构化的 Word 报告。适用于数据库管理员进行日常健康检查、性能评估、安全审计等场景。

✨ 主要功能

  • ✅ 全自动采集 :自动检测数据库版本(V8R3/V8R6/V9),适配 sys 或 pg 系统表前缀。
  • ✅ 系统资源监控:采集主机 CPU、内存、磁盘使用情况(支持本地或 SSH 远程)。
  • ✅ 数据库配置检查:列出所有非缺省参数、归档/自动清理设置。
  • ✅ 性能分析:连接数统计、缓存命中率、BGWriter、死锁、复制延迟、长事务等。
  • ✅ 对象统计:数据类型字段数、对象种类分布、大对象 TOP 20、表空间使用。
  • ✅ 安全审计:用户密码过期时间、锁等待、未使用索引、非法对象名、继承关系。
  • ✅ 插件管理:列出所有可用及已安装的扩展插件。
  • ✅ Word 报告 :自动生成带有表格的 .docx 报告,结构清晰,可直接阅读或归档。
  • ✅ 多种运行模式 :
    • 单机巡检:交互式输入连接信息,立即执行。
    • 批量巡检(Excel):通过 Excel 模板配置多个数据库实例,一键批量巡检。
    • 模板生成:自动生成 Excel 配置模板,方便填写。

📦 依赖安装

系统要求

  • Python 3.6 或更高版本
  • 可访问 KingbaseES 数据库(端口 54321 默认)
  • 建议在 KingbaseES 服务器上或能与数据库网络互通的机器上运行

安装 Python 依赖

bash 复制代码
pip3 install psycopg2-binary python-docx psutil

可选:如需 SSH 远程采集系统信息,还需安装 paramiko(工具已内置支持,但需手动安装)

bash 复制代码
pip3 install paramiko

🚀 使用方法

1. 下载脚本

bash 复制代码
git clone https://github.com/yourusername/kingbase-inspector.git
cd kingbase-inspector
chmod +x main_kingbase.py

2. 单机巡检

bash 复制代码
python3 main_kingbase.py

按提示依次输入:

  • 主机地址(默认 localhost)
  • 端口(默认 54321)
  • 用户名(默认 system)
  • 密码
  • 报告标识名称
  • 巡检员姓名

等待采集完成,报告将生成在 reports/ 目录下,文件名格式:KingbaseES巡检报告_IP_时间戳.docx

3. 批量巡检(Excel)

  • 首次使用先选择菜单 3. 创建批量巡检模板,生成 kb_batch_template.xlsx。
  • 编辑模板,填写多个数据库的连接信息(可同时配置 SSH 信息用于系统监控)。
  • 选择菜单 2. 批量巡检(Excel),工具将依次巡检每个库并生成独立的报告。

4. 报告示例

生成的 Word 报告包含以下章节:

  • 封面:基本信息(数据库名、版本、主机、巡检员等)
    1. 总体健康状态
    1. 系统资源检查(CPU、内存、磁盘)
    1. KingbaseES 配置检查(非缺省参数、归档/自动清理)
    1. 用户数据库(列表、大小、表空间)
    1. 数据库对象统计(类型字段、对象种类、大对象、表统计)
    1. 连接与性能分析(连接数、缓存命中、BGWriter)
    1. 数据库年龄与长事务
    1. 复制与归档(流复制、复制槽、归档统计)
    1. 安全与潜在风险(密码过期、锁等待、未使用索引、死锁等)
    1. 插件信息
    1. 报告说明

所有数据均以表格呈现,清晰易读。

⚙️ 配置说明

数据库要求

  • 需要存在一个名为 test 的数据库(工具默认连接该库执行采集)。如果不存在,请手动创建:

    sql 复制代码
    CREATE DATABASE test;
  • 建议使用具有足够权限的数据库用户(推荐 system 或 kingbase),至少需要以下权限:

    • 查询系统表/视图(pg_*, sys_*)
    • 执行系统函数(pg_read_file 可选,用于获取配置文件 md5)
    • 读取 pg_stat_* 统计信息

SSH 远程采集(可选)

如果不需要采集操作系统信息,可以在提示时选择不配置 SSH,工具将只采集数据库内部信息。

🛠️ 故障排查

问题 可能原因 解决方法
NameError: name 'prefix' is not defined 代码中使用 f-string 导致变量未定义 请确保使用最新版脚本(已修复)
psycopg2.OperationalError: FATAL: database "test" does not exist 缺少 test 数据库 登录任意数据库执行 CREATE DATABASE test;
部分采集步骤失败(如 license) 该函数在当前版本不存在 不影响整体报告,工具已自动忽略
ModuleNotFoundError: No module named 'docx' 缺少 python-docx 执行 pip3 install python-docx
Word 报告打开乱码 字体不支持中文 使用 WPS 或 Microsoft Word 打开,一般可正常显示

🤝 贡献指南

欢迎提交 Issue 和 Pull Request。

  • 报告 Bug:请附上错误截图、Python 版本、KingbaseES 版本。
  • 功能建议:描述您希望新增的巡检项或报告格式。
  • 代码规范:请保持 PEP 8 风格,添加必要的注释。

📄 许可证

本项目采用 MIT 许可证,允许自由使用、修改和分发。

🙏 致谢

  • 感谢 KingbaseES 官方提供的 check_db.sh 脚本,本项目从中借鉴了大量优秀 SQL 逻辑。
  • 感谢 psycopg2、python-docx、psutil 等开源库的开发者。

📧 联系方式

如有任何问题,欢迎通过 GitHub Issues 交流,或邮件联系作者。


如果觉得这个工具有用,请给个 ⭐ Star 支持一下!





相关推荐
smile_life_17 分钟前
MySQL 设置 防止账户被暴力破解
数据库·mysql
ShineWinsu34 分钟前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
测试盐1 小时前
oracle数据库卡顿排查
数据库·oracle
滕州市燕猫虎计算机科技工作室个体工商户1 小时前
MySQL、MVCC、多版本并发控制
数据库·mysql·mvcc·数据库事务
明航咨询-陈老师1 小时前
ITSS运行维护服务能力成熟度认证技术纵深:标准模型、等级路径、2026审核趋势与CS/CMMI对比
服务器·数据库·cmmi
缓慢更新2 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
AI小百科2 小时前
向量数据库:AI 的「记忆仓库」是怎么工作的
数据库·人工智能·oracle
煎饼皮皮侠2 小时前
【设计】设计一个Web版数据库管理平台(之七):多数据库类型易扩展
数据库
Nturmoils2 小时前
MongoDB迁移之后,Spring Data 和 Hibernate 各自接哪类请求
数据库
画中有画3 小时前
在自动化脚本中操作本地数据库
数据库·oracle·自动化