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(工具已内置支持,但需手动安装)
bashpip3 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 报告包含以下章节:
- 封面:基本信息(数据库名、版本、主机、巡检员等)
-
- 总体健康状态
-
- 系统资源检查(CPU、内存、磁盘)
-
- KingbaseES 配置检查(非缺省参数、归档/自动清理)
-
- 用户数据库(列表、大小、表空间)
-
- 数据库对象统计(类型字段、对象种类、大对象、表统计)
-
- 连接与性能分析(连接数、缓存命中、BGWriter)
-
- 数据库年龄与长事务
-
- 复制与归档(流复制、复制槽、归档统计)
-
- 安全与潜在风险(密码过期、锁等待、未使用索引、死锁等)
-
- 插件信息
-
- 报告说明
所有数据均以表格呈现,清晰易读。
⚙️ 配置说明
数据库要求
-
需要存在一个名为
test的数据库(工具默认连接该库执行采集)。如果不存在,请手动创建:sqlCREATE 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 支持一下!






