首页/系统/服务器硬件与 RAID 速查/内存问题一键采集脚本
内存与电源72 条

内存问题一键采集脚本

排障时先固化证据:用一段脚本把 DMI、内核日志、SEL 与近期 journal 打包,避免反复上机取数,也方便发给厂商支持。

为什么要有采集脚本

内存类问题的排障过程往往是重复的:先看配置、再看内核错误记录、再看 BMC 事件,然后发现还缺一项数据又要重新上机取一次。用一段固定脚本把这几类证据一次采集并打包,能把这种往返降到一次,也方便把完整的证据包直接转给厂商支持。脚本的价值不仅在省时间,更在于采集口径统一——同一机型不同时间取到的数据可以横向对比。

基本信息

运行环境Linux 服务器,需 root 权限(读取 DMI 与日志)
采集内容硬件配置、内核错误记录、BMC 事件、近期日志
输出形式按时间命名目录,打包为单个压缩文件
配合信息附加机型、序列号与固件版本
使用建议脚本纳入运维工具库并固定输出路径
外发要求日志可能含业务信息,按流程脱敏

典型使用场景

  • 内存报错后的证据固化,减少反复上机取数
  • 厂商报修:一次提供完整证据包
  • 更换决策:用同一口径的数据横向比较多台机器
  • 复盘归档:把故障现场数据与工单一起保存
  • 批量巡检:定期采集形成历史数据序列

采集脚本(bash)

采集脚本(bash)
OUT=/tmp/mem_report_$(date +%F_%H%M)
mkdir -p "$OUT"
# 硬件配置:内存槽位、容量与速率
dmidecode -t 16 -t 17 > "$OUT/dmi.txt"
# 内核侧错误记录:EDAC 与机器检查相关
dmesg -T | grep -iE "edac|mce|memory error" > "$OUT/kernel_mem.txt"
# BMC 事件日志:硬件侧记录
ipmitool sel elist > "$OUT/sel.txt" 2>/dev/null
# 近期内核日志中的同类记录(journal 环境)
journalctl -k --since "7 days ago" | grep -iE "edac|mce" > "$OUT/journal_mem.txt"
# 打包为单个证据文件
tar czf "$OUT.tgz" -C /tmp "$(basename "$OUT")"
ls -lh "$OUT.tgz"

采集项与用途

采集项来源用途
内存配置DMI 表确认条数、槽位与运行速率
内核错误记录内核环形缓冲捕获最近的硬件错误信息
BMC 事件IPMI SEL获取带位置的硬件侧记录
历史日志journal 或日志文件补齐被缓冲冲刷的记录
机型与版本DMI 与固件查询供厂商判断平台基线
把脚本放进运维工具库并固定输出路径:长期对比同一机型的历史证据包,比每次临时写命令高效得多。
证据包含主机名、序列号与配置信息:外发前按内部规范做脱敏与审批,不要直接发送到公共渠道。

易错点

  • 每次采集路径随手写:历史报告无法对应,横向对比失效
  • 证据包不含机型与固件版本:厂商支持难以判断平台基线
  • 只采内核日志不采 BMC 事件:缺少带位置的硬件侧记录
  • 采集后不归档命名:多个工单的证据文件混在一起无法区分

数据来源与参考

  • man 8 dmidecode
  • 运维实务整理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌