dm-ops
达梦统一巡检、恢复条件评估、安全检查插件。命令行和 DeepSeek Harness 调用同一执行入口,输出 HTML 报告及 JSON 证据。当前版本 0.1.7。
范围
每节点复用 85 项巡检、60 项安全检查和 16 类恢复场景。保留原项目 MIT 许可证,来源与改动见 THIRD_PARTY.md。
新增或修正:
- SSH 主机名、实例名、端口、dm.ini、运行进程交叉匹配;匹配失败不采集主机数据。
- 数据、归档、备份路径对应文件系统的容量检查,不对 EFI 等无关挂载点报警。
- 日志文件名严格匹配目标实例名,不汇总其他实例日志。不以未找到匹配日志推断无故障。
- 主备 PRIMARY/STANDBY 角色正常差异不报异常;非 DSC 不执行 DSC 故障场景判断。
- SSH 原生密钥登录,严格校验 known_hosts,不自动接受服务器密钥。
- 缺少历史文件、审计目录、权限或执行失败独立列出,不判通过。
- JDK 11+ 启动检查;推荐 JDK 21。Java 子进程通过环境变量读取口令,不把口令放进命令行。
- 每个检查项保留 SQL/命令、结果及规则来源;HTML 不执行报告内容中的脚本。
- 可选
dmrman CHECK BACKUPSET校验已有备份。恢复条件、备份校验、实际恢复分别标记。
运行
需要 Node.js 20+、JDK 11+(包括 javac)、用户自行提供的达梦 JDBC 驱动。主机检查要求目标 Linux 提供 Python 3 和常用系统命令,执行端提供 OpenSSH。
复制 examples/config.json 并填写实际目标。credentialRef 是环境变量或 Harness 凭据名,不是密码本身。密码不写进配置文件。
node bin/dm-ops.js --config /secure/dm-ops.json
命令行从同名环境变量取数据库密码。退出码 0 表示执行结束且没有执行失败项,不代表没有告警或证据缺失;退出码 1 表示存在执行失败或启动错误。目录和文件默认仅当前用户可读。
group 标识同一部署组。独立实例不要放在同一组。主备各节点均需配置;未提供备库时只能报告节点覆盖不完整。backupPaths 填备份集目录,留空时不执行备份文件校验。
SSH 主机名、实例名和配置路径必须与 JDBC 采集的实例一致。配置文件是管理员信任边界,模型不能修改它,也不能指定任意 SQL、命令、路径或密码。插件只提供检查,不提供整改和恢复操作。
Harness
从 GitHub 安装:
dsh plugin --profile web add github:wufengwind/dsh-plugin-dm-ops
dsh plugin --profile headless add file:/absolute/path/dm-ops
在对应 profile 的 cordis.patch.yml 中添加:
- id: dm-ops
config:
configPath: /secure/dm-ops.json
把数据库密码放入 Harness 凭据服务,名称与 credentialRef 相同。可直接说:“使用 dm_ops_assess 检查 single 和 ha-a、ha-b,给出报告路径及执行失败项。”工具只接受已配置的目标 ID。
主备角色检查仅确认采集角色,不验证复制健康或可切换。页修复条件未核实,B1 场景标记证据不足;真实 DSC 恢复条件未验证,C1/C2 不判可恢复。
报告界面
状态色区分严重、告警、证据不足、权限不足和通过;明细按严重程度排序。支持状态、节点和关键词组合筛选,证据折叠展示。HTML 自包含,无外部字体或脚本依赖。依据展开时按需创建,收起时释放;长结果集每次加载 50 行。查看依据和筛选需要启用 JavaScript;完整原始数据仍保存在 JSON 报告中。
结果边界
- 单实例、同机数据守护主备为本版本验收环境;跨机器故障切换和性能没有验收。
- DSC 有识别和适用性处理,未完成真实 DSC 验证,报告明确标注 unvalidated。
- 恢复评估只检查条件。备份校验通过也不等于恢复演练通过;所有报告明确
restoreTested: false。 - 继承的 SQL/阈值规则并非全部经过人工验证。存在证据缺失、权限不足时,不得把执行完成解释为全项通过。
- 日志每文件读取尾部最多 1 MiB,结果最多 100 条,仅用于初筛;文件名不能明确归属实例时不猜测归属。
- 目录不存在与目录不可读均保留为证据不足。SSH 审计配置仍需结合实际组织要求解释。
开发验证:npm test。真实环境验收记录见 VALIDATION.md。
0.1.7 数据与判定
JSON version=2:检查项集中在 checks;节点用 checkIds 引用,依据通过 {$ref: id} 引用 evidenceStore。引用内容不丢弃查询行,HTML 按需加载共享依据。根因仅归并有明确条件证据的重复发现,不代表全部独立问题。原始检查项仍完整保留。控制文件、REDO 镜像仅有配置证据时不能判定可恢复;权限错误与对象缺失分开记录。
No comments yet. Be the first to write one.