服务器硬件健康历史报告必须依赖系统内置日志机制:Windows用perfmon创建数据收集器集生成含时间轴的HTML报告;Linux用sar批量导出/var/log/sa/中30天内CPU、内存、磁盘指标;跨平台用smartctl和dmidecode获取固件级硬件摘要,并可合并为PDF。

服务器硬件健康检查的历史统计报告,不能靠截图或手动记录,必须依赖系统自带的底层日志机制和结构化导出工具。关键在于区分“实时快照”和“历史趋势”——前者看当前状态,后者需持续采样、自动归档、按需导出。
Windows 服务器:用性能监视器导出 HTML 系统健康报告
Win11/Win Server 内置的“系统性能报告”是唯一能自动生成带时间轴、图表与驱动事件关联的硬件健康报告的功能。它默认不启用,需手动创建数据收集器集:
- 按 Win + R 输入
perfmon打开性能监视器 - 展开左侧“数据收集器集” → 右键“系统” → “新建” → “手动创建(高级)”
- 勾选“系统性能”,其他全部不选;命名如
HWHealth_60s,保存到桌面 - 右键刚建的集合 → “启动”,等待约60秒 → 再次右键 → “停止”
- 进入保存路径,找到以日期时间命名的
.cab文件,右键“全部提取” - 打开解压后的文件夹,双击
index.html即可查看完整报告,含 CPU 温度趋势(若传感器支持)、磁盘响应延迟、内存硬错误计数、GPU 负载曲线及 WHEA 错误时间戳
Linux 服务器:用 sar 提取近30天 CPU/内存/磁盘历史记录
Linux 默认通过 sysstat 服务每10分钟采集一次硬件指标,并存为二进制文件在 /var/log/sa/。无需额外安装,只需按日期批量导出为可读文本:
- 确认服务已启用:
sudo systemctl is-enabled sysstat(若为 disabled,请先sudo systemctl enable --now sysstat) - 列出所有历史文件:
ls /var/log/sa/sa[0-9][0-9] - 导出某一天的 CPU 和内存汇总(如 10月5日):
sar -u -r -f /var/log/sa/sa05 > ~/data/cpu_mem_20261005.txt - 批量导出整月数据(建议写脚本):
for d in {01..30}; do sar -u -r -f /var/log/sa/sa$d 2>/dev/null | grep -E "^[0-9]|Average" >> ~/data/monthly_hw_report.txt; done - 补充磁盘 I/O 历史:
sar -d -f /var/log/sa/sa05 | grep -v "DEV\|Average" | head -20(筛选高负载时段)
跨平台通用:用 smartctl + dmidecode 抓取硬件固件级健康摘要
上述日志反映的是操作系统视角的负载,而硬盘寿命、内存插槽状态、BIOS 版本等底层信息需直接读取固件。这些命令输出稳定、可重定向为文本报告:
- 导出所有硬盘 SMART 健康摘要:
sudo smartctl -a /dev/sda > ~/hw_report/sda_smart.txt 2>&1(替换 sdb、nvme0n1 等) - 抓取完整硬件清单(厂商/型号/序列号/CPU 插槽数/内存插槽数):
sudo dmidecode -t system,baseboard,processor,memory > ~/hw_report/hw_inventory.txt - 生成单页 PDF 报告(需安装 wkhtmltopdf):
echo "<h2>Hardware Health Report $(date)</h2><pre class="brush:php;toolbar:false;">$(cat ~/hw_report/*.txt)</pre>" | wkhtmltopdf - ~/hw_report/summary.pdf
注意:别混淆“监控”和“体检报告”
像 top、iostat、nvidia-smi 这类工具只给实时值,无法回溯。真正用于故障复盘或资产审计的历史报告,必须满足三个条件:有明确时间戳、含连续采样点、输出格式可归档(HTML/XML/TXT)。临时跑一次命令看到“CPU 80%”没意义,要看过去72小时是否持续高于阈值、是否伴随磁盘响应时间同步上升、是否在某次内核更新后突变——这些只能靠上面提到的系统级日志机制支撑。

















