前言¶
在 DSH 里做服务器巡检或值班辅助时,常见两类卡点:SEL、journalctl 里事件很多,却难以区分硬件故障与可观察项;结论若只有「主板可能有问题」一类表述,现场往往要重新定位,备件也可能白跑。关键词搜索能命中行,但不会自动给出设备台账、槽位和处置链。
下面介绍社区插件 dsh-server-log-analyzer(维护者 xiaofadefa)。它在 DeepSeek Harness 中注册分析、采集、基线对比等工具,也可单独用 Node 命令行运行,把带外日志与系统日志压成可报修的分级结论,并把每条结论追溯到原始日志行(文件:行号)。
这是什么¶
dsh-server-log-analyzer 是 DSH 的 profile bundle 插件(cordis.patch.yml),面向多品牌服务器的 BMC / 带外日志 与 OS 侧系统日志 做硬件向的初步分析。
插件形态上同时提供三条路径:
- DSH 内 8 个模型可见工具(analyze / collect / baseline / diff / rules / report / ops / doctor);
- 3 个运维技能 安装到
$DSH_HOME/skills(目录热发现,装完通常无需重启即可见); - 独立 CLI
bin/dsh-hwlog.js(Node ≥18,零第三方依赖),不装 DSH 也能分析。
仓库:https://github.com/xiaofadefa/dsh-server-log-analyzer
社区目录页:https://www.skillhub.cn/plugins/xiaofadefa/dsh-server-log-analyzer
许可证:MIT(见仓库 package.json 与 LICENSE)。
核心功能¶
识别、定性、出结论¶
插件 README 把能力归纳为三件事:
| 能力 | 说明 |
|---|---|
| 识别 | 自动判断品牌(14 类签名)、日志类型(10 种格式)、设备台账(型号/SN/BMC/BIOS/CPU/内存/系统等) |
| 定性 | 57 条品牌无关规则 + 品牌事件码别名表,将日志归类为内存 UCE、电源冗余丢失、风扇失效、RAID 降级、PCIe AER 等,并给出槽位(如 DIMM A1、PSU2、0000:65:00.0) |
| 出结论 | 健康评分与 A/B/C/D 分级、11 类根因关联链、处置动作(含厂商命令方向)、证据行 |
品牌与输入形态¶
支持戴尔 iDRAC、HPE iLO、联想 XCC/IMM、浪潮/华为/超微及曙光、中兴、H3C、富士通等常见带外形态;未命中品牌签名时仍可用品牌无关规则兜底。
除文本日志外,读取层还可处理例如:ipmitool sel save 的二进制 SEL(.bin)、厂商一键收集包(zip/tar.gz)、BMC 网页导出的 HTML/CSV/TXT、GBK/GB18030 编码文本等;.xlsx 会提示另存为 CSV,不静默跳过。
日志格式可自动识别,也可用 CLI 的 --format 指定,涵盖 ipmi-sel、idrac-lifecycle、ilo-iml、redfish-json、syslog、dmesg、journal-json、storage-cli 等。
根因关联(而非单纯罗列)¶
单条告警会组合成故障链,例如供电输入丢失与 OS 非预期重启 → CR_POWER_CHAIN;仅系统日志、无带外证据 → CR_NO_BMC_EVIDENCE(报告会标明证据不全)。完整关联表见仓库 README「根因关联」一节。
DSH 工具面¶
| 工具 | 用途 |
|---|---|
hwlog_analyze |
分析路径/目录/粘贴文本 → 体检报告 |
hwlog_collect |
各品牌采集清单或可执行采集脚本 |
hwlog_baseline / hwlog_diff |
基线快照与对比(新增/恶化/缓解/已恢复) |
hwlog_rules |
查询规则库与品牌事件码覆盖 |
hwlog_report |
输出 Markdown / JSON 报告文件 |
hwlog_doctor |
规则库、探针、品牌识别、技能落地等自检 |
安装与启用¶
作为 DSH 插件(推荐)¶
官方 README 给出的安装方式如下(公开 GitHub 仓库;npm 同名包 README 注明暂不可用,请用 GitHub 方式):
dsh plugin --profile desktop add github:xiaofadefa/dsh-server-log-analyzer
验证补丁是否进入 profile 树(Windows 示例,不需要重启 DSH 进程即可 dump 配置):
dsh --profile desktop --dump-config | findstr /i server-log-analyzer
安装后 重启 DSH 桌面版(退出再打开):插件工具随进程启动注册。技能落在 $DSH_HOME/skills,由目录监视发现,一般 无需重启 即可在技能列表中看到。
本地开发可用软链(路径按本机修改):
dsh plugin --profile desktop add link:D:\dafeiyu\dsh-plugins\dsh-server-log-analyzer
仅命令行¶
在插件目录下:
node <插件目录>\bin\dsh-hwlog.js analyze .\logs --out report.md
安装包内也可通过 dsh-hwlog 入口(见 package.json 的 bin 字段)。
技能单独落地¶
node <plugin>/bin/dsh-hwlog.js skills install
node <plugin>/bin/dsh-hwlog.js skills status
技能带内容哈希清单($DSH_HOME/dsh-server-log-analyzer/skills-manifest.json);本地改过的 SKILL.md 不会被插件覆盖。
外发安装说明与隐私口径见仓库 docs/install-for-others.md;打包请用 scripts/pack-release.ps1,避免把含版权手册 PDF 的源码目录直接压缩外发。
典型用法¶
命令行:单机分析与巡检¶
# 带外 + 系统日志一起分析
dsh-hwlog analyze .\logs\dell-sel.log .\logs\messages --out report.md --asset node01-ABCD123
# 摘要或 JSON(便于工单/入库)
dsh-hwlog analyze .\logs --brief
dsh-hwlog analyze .\logs --json > digest.json
# 生成采集脚本
dsh-hwlog collect --brand auto --scope all --script > collect.sh
# 基线与 diff
dsh-hwlog baseline .\logs --out baseline-node01.json --label node01-ABCD123
dsh-hwlog diff baseline-node01.json .\logs-new --out 对比报告.md
进不去 OS、只有带外日志¶
先做采集,再分析二进制 SEL 或一键收集包:
dsh-hwlog collect --brand auto --scope bmc
dsh-hwlog analyze sel.bin
dsh-hwlog analyze onekey-collect.zip
dsh-hwlog analyze bmc-export.html
在 DSH 会话中,可将同样文件交给 hwlog_analyze(参数含 paths、text、vendor、format、output 等,见 README 工具表)。
输出摘要示例¶
README 给出的摘要形态类似:
健康评分 42.5/100(C 级 · 告警)|文件 3 个|记录 55 条|命中硬件事件 44 条
设备:PowerEdge R750 / SN ABCD123 / BMC 7.10.30.00
主要问题:
· [紧急] 内存不可纠正错误(多比特 ECC / UCE) ×3 @ DIMM:A1
· [紧急] 电源模块失效 ×2 @ PSU:2
根因判断:供电侧掉电 → 整机非预期宕机(疑似市电/PDU/UPS)
完整报告还包含设备台账、分级发现明细、根因关联、时间线、采集缺口等章节。
适用场景与注意¶
适合谁:机房/数据中心值班、硬件报修前定性、周期性巡检(基线 + diff)、需要在智能体对话里直接丢日志或路径的场景。
边界:这是「硬件初步分析」与证据链整理,不能替代厂商 RMA 流程或现场电测;只有 OS 日志、无带外时,工具会在关联规则中标注证据不全。厂商手册衍生的码表等可能需按仓库说明自行导入,外发包默认不含受版权约束的手册 PDF。
安全与合规:插件以 当前 DSH 进程的用户权限 读取你指定的日志路径;安装前请阅读源码与 MIT 许可证,确认日志中无不应交给模型的敏感信息。社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-server-log-analyzer 把多品牌带外与系统日志收敛为「哪台机器、哪个部件、要不要换件、证据在哪一行」,并在 DSH 里以工具与技能两种形态可用。需要一页纸对外说明时,仓库提供 docs/intro.md;安装与卸载步骤见 docs/install-for-others.md。