SysInfoKeeper 是一款面向 Linux/Unix 的硬件资产与漂移检测 CLI 工具。
每次执行都会采集完整的硬件快照(CPU、内存、磁盘、网卡、GPU、风扇、传感器等),与存储在 SQLite 中的历史记录比对,并将设备标记为 新增 、移除 、变更 或 位置调整。CLI 支持渲染丰富的终端表格、输出 JSON/YAML,也可以作为守护进程持续记录硬件事件。
图例:





功能亮点
- 精准的硬件发现 :整合
lsblk、udevadm、dmidecode、smartctl、findmnt、pterm等工具,统一输出每个部件的规范视图。 - 磁盘基准测试 :在真实挂载点上执行校准后的
dd测试(避开 tmpfs),并记录读/写吞吐与 SMART 数据。 - 事件追踪:快照持久化在 SQLite,比较器会标记新增/移除/迁移,并保留完整时间线,便于审计。
- 留存策略 :默认保存 30 天历史(可通过
sinfo retention调整),过期记录可自动或手动清理。 - 自动化友好 :支持多种输出格式(
graph、table、json、json-line、yaml),按硬件类型筛选,分级输出 (basic/advanced/full),并附带 systemd service 与 AppImage 打包脚本。
bash
.
├── cmd/sinfo/ # Cobra CLI 入口(root、clean、retention 等)
├── core/ # 采集器、模型、数据库层、比较器
│ ├── hardware/ # 快照管理、DB 存储、调度器
│ ├── model/ # 渲染助手与 JSON 结构体
│ └── packages/ # CPU / RAM / Disk / GPU / NIC 采集逻辑
├── deployments/ # systemd 示例
├── tools/ # 调用图、构建脚本
├── LICENSE # 双重许可策略(AGPLv3 + 商业协议)
├── LICENSE.AGPLv3 # AGPLv3 正文
└── LICENSE.COMMERCIAL # 商业授权摘要
获取:
ini
GO111MODULE=on go install binrc.com/sysinfokeeper/cmd/sinfo@latest
sinfo
核心命令
| 命令 | 说明 |
|---|---|
sinfo |
采集硬件信息、输出结果并写入快照。 |
sinfo clean |
清理历史记录(支持 --all、--inactive、--days、--type、--dry-run 等)。 |
sinfo retention |
查看或修改留存天数(默认 30 天)。 |
sinfo --output json |
机器可读输出。 |
sinfo --target cpu --target memory |
仅采集指定硬件类型。 |
无人值守场景可结合 cron/systemd,或使用 core/hardware/scheduler.go 中的调度器。
使用 serve 以 systemd 服务方式运行
仓库中已经提供了参考配置 deployments/sinfo.service。可将其复制到 /etc/systemd/system/ 并按需修改,用于长时间运行 sinfo serve 调度任务:
ini
[Unit]
Description=SysInfoKeeper Hardware Monitoring Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=sysinfokeeper
Group=sysinfokeeper
WorkingDirectory=/var/lib/sysinfokeeper
Environment=SINFO_INTERVAL=3600
Environment=SINFO_RETENTION=30
Environment=SINFO_SPEED_TEST=low
EnvironmentFile=-/etc/sysinfokeeper.env
ExecStart=/usr/local/bin/sinfo serve \
--interval $SINFO_INTERVAL \
--retention $SINFO_RETENTION \
--speed-test $SINFO_SPEED_TEST
Restart=on-failure
[Install]
WantedBy=multi-user.target
可以通过环境变量或 /etc/sysinfokeeper.env 覆盖 interval、retention、speed-test 等参数。sinfo serve 将常驻运行,不断采集并写入快照直至服务停止。
参与贡献
- Fork & Clone 仓库。
- 开启 Go Modules(
GO111MODULE=on)。 - 提交前请
gofmt/goimports,并运行 lint / test。 - 提交 Issue 时请尽量描述硬件环境(内核、发行版、存储拓扑、RAID 等)。
贡献默认遵循本项目的双重许可方案(见下文)。