司命,掌管生死,守护硬件。
SiMing 是一个硬件健康监控工具,目前专注于硬盘健康监控。它可以自动发现系统中的硬盘,记录容量使用情况和 SMART 信息,并通过大模型对硬盘健康状况进行分析,给出建议和预测。
整个都是用AI写的,除了README.md,我补充和修正了部分内容
为何要做这个项目:
✅一方面我确实有这部分需求,想着监测一下硬盘的健康情况
✅另外一方面我自己也想测试一下到底AI CODING能达到什么程度
✅只能说确实惊艳到我了,但是也踩了很多坑(个人能力有限),目前项目还未完善。
- ✅ 自动发现硬盘: 自动扫描系统中的所有硬盘,提取品牌、型号、容量等信息
- ✅ 灵活监控配置: 手动选择需要监控的硬盘,支持自定义 cron 表达式进行定时监控
- ✅ 容量监控: 持续记录硬盘的使用情况和剩余空间
- ✅ SMART 监控: 读取并保存硬盘 SMART 信息,跟踪关键属性变化
- ✅ 数据存储: 使用 SQLite 存储所有监控数据,轻量且高效
- ✅ 大模型分析: 接入 OpenAI API,利用大模型分析指定时间区间的硬盘健康状况,给出建议和推测
- ✅ 配置文件: 所有配置包括大模型提示词都支持外部配置文件修改
- ✅ Docker 支持: 提供 docker-compose 一键部署
- ✅ 分层采集处理: 分为采集脚本和处理服务,采集脚本采集硬盘信息,发送到处理服务,处理服务入库
- ✅ 支持四个时间维度AI比较: 从 now ,-7d ,-30d ,-365d 这四个时间维度比较
需要 Java 11+ 和 Maven
# 克隆项目
git clone https://github.com/FightTogether/SiMing.git
cd SiMing
# 编译
mvn package -DskipTests
# 配置 (可选)
# 编辑 config/application.yml 修改配置
# 设置 OPENAI_API_KEY 环境变量
# 运行
java -jar target/siming-1.0.0.jar# 克隆项目
git clone https://github.com/FightTogether/SiMing.git
cd SiMing
# 配置
# 1. 创建配置目录和文件
mkdir -p config
# 2. 编辑 docker-compose.yml,添加需要监控的硬盘设备
# 3. 启动
export OPENAI_API_KEY=your_openai_api_key_here
docker-compose up -d --build
# 查看日志
docker-compose logs -f siming提示:
apiKey也可以通过环境变量OPENAI_API_KEY设置,优先级更高。
disks: 硬盘基本信息表capacity_records: 容量监控记录表smart_records: SMART 属性监控记录表analysis_results: 大模型分析结果表
当你积累了一段时间的监控数据后,可以使用 AI分析功能让大模型分析硬盘健康状况:
这会 从 now ,-7d ,-30d ,-365d 这四个时间维度比较分析:
- 总结容量使用变化趋势
- 分析 SMART 属性变化,重点关注异常指标
- 评估当前硬盘健康状况,给出评分 (0-100)
- 判断健康等级:GOOD / WARNING / CRITICAL
- 给出相应的建议和未来趋势推测
SiMing 采用分离架构,服务端统一存储和分析数据,客户端部署在需要监控的服务器上采集数据。
在需要监控的客户端主机上执行以下命令:
# 替换为你的 SiMing 服务端地址
curl -fsSL https://your-siming-server.com/install.sh | bash -s https://your-siming-server.com示例:
curl -fsSL http://192.168.1.1:8080/install.sh | bash -s http://192.168.1.1:8080这个命令会:
- 自动从服务端下载
disk-monitor.sh客户端脚本 - 自动创建
client-config.conf配置文件,自动填入服务端地址 - 自动使用当前主机名作为
CLIENT_ID - 设置执行权限,完成安装
安装完成后,你可以:
# 进入安装目录(默认在 ~/siming)
cd ~/siming
# 单次采集测试
./disk-monitor.sh once
# 启动守护进程(每天自动采集)
./disk-monitor.sh start
# 查看守护进程状态
./disk-monitor.sh status
# 停止守护进程
./disk-monitor.sh stop
# 重启守护进程
./disk-monitor.sh restart
# 从服务端更新到最新版本
./disk-monitor.sh update
# 查看帮助
./disk-monitor.sh help服务端依赖:
- Java 11+
- smartmontools (获取 SMART 信息,Docker 镜像已内置)
- OpenAI API Key (可选,用于大模型分析)
客户端依赖:
- bash
- curl
- smartmontools
- util-linux (lsblk)
.
├── config/ # 配置文件目录
│ └── application.yml # 默认配置文件
├── src/
│ └── main/
│ └── java/
│ └── cn/
│ └── why360/
│ └── siming/
│ ├── config/ # 配置类
│ ├── dao/ # 数据访问层
│ ├── database/ # 数据库管理
│ ├── entity/ # 实体类
│ ├── scheduler/ # 定时任务调度
│ ├── service/ # 业务服务
│ └── SimingApplication.java # 入口
├── Dockerfile # Docker 镜像构建
├── docker-compose.yml # Docker Compose 配置
├── pom.xml # Maven 配置
└── README.md
- Java 11
- Maven
- SQLite
- Quartz (定时任务)
- HikariCP (连接池)
- OpenAI API
- Lombok
MIT License
SiMing 由 FightTogether 维护。

