“Patrol”智能系统巡检工具:一位IT老兵与SOLO协作开发的自动化巡检工具


1. 摘要

我用 TRAE SOLO 开发了一款轻量级、可配置的系统巡检工具 Patrol。它通过 SSH 自动登录多台服务器执行预设检查项,并一键生成 HTML/JSON/TXT 多格式报告,帮助运维人员从重复的手工巡检中解放出来。目前已完成 MVP 版本,支持多服务器并发巡检,已在 4 台不同系统(Rocky Linux / Debian)上验证通过。

2. 背景

我是一名IT老兵,从研发转运维,日常需要维护多台服务器,定期检查磁盘、内存、进程、Docker 等状态。传统方式需要手动 SSH 登录每台机器、敲命令、人工判断异常,耗时且容易遗漏。生产环境对安装第三方软件有严格限制,因此我需要一个纯 Shell、无侵入、可配置的自动化工具。这次借助 TRAE SOLO,我希望能快速搭建一个可落地的巡检框架。

3. 实践过程

任务拆解

我将整个工具拆解为五个核心模块:

  1. 配置管理:通过 group 标签统一管理服务器和检查项

  2. 远程执行:SCP 上传脚本 + SSH 执行,采集数据

  3. 结果解析:远程脚本直接输出 JSON,中心机合并

  4. 报告生成:输出 HTML/TXT 报告

  5. 告警判断:支持 CPU/内存/磁盘的警告/严重阈值

与 SOLO 的协作流程

1. 架构设计阶段

我向 SOLO 提问:

“我需要一个 Shell 脚本,能够读取 servers.conf、check_groups.conf、checks.conf,批量 SSH 执行采集,生成报告。”

SOLO 生成了清晰的目录结构和主框架。

2. 核心功能迭代

  • 并发控制:SOLO 实现了 & + wait 的并行执行,性能提升 3 倍

  • JSON 输出:使用 jq 构建结构化数据

  • HTML 报告:带表格和颜色标记

3. 踩坑与解决

  • 变量名冲突:SOLO 使用了 GROUPS,但这是 Bash 内置变量,改为 GROUP_NAMES 解决

  • 换行符问题\n 变成字面量,改用 $'\n' 解决

  • 子 shell 变量丢失:管道导致变量无法传递,改用 <<< 重定向

  • 跨系统兼容:Debian 和 Rocky Linux 命令输出格式差异,用 sed 按关键字提取

关键 Prompt 示例

  • “请修改 patrol.sh,增加 --parallel 参数控制并发数”

  • “remote_collector.sh 中 CPU 使用率在 Debian 上显示为 0,请修复”

  • “请添加磁盘告警阈值,支持警告和严重两级”

4. 成果展示

项目结构

patrol/

├── patrol.sh # 主调度脚本

├── remote_collector.sh # 远程采集脚本

├── conf/

│ ├── servers.conf # 服务器列表

│ ├── check_groups.conf # 组标签定义

│ └── checks.conf # 检查项定义

└── output/ # 报告输出

运行结果

  • 成功采集多台服务器

  • 覆盖 CPU、内存、磁盘、进程、Docker 检查

  • 生成 JSON + HTML + TXT 报告

代码仓库:https://github.com/uncleask/patrol (v0.2.0)

5. 效果与总结

提效成果:10 台服务器巡检从半小时 → 2 分钟

SOLO 协作:生成 80% 代码框架,修复 10+ 个 Bash 细节问题

可复用方法:配置与代码分离、group 标签管理、跨系统兼容处理

本作品使用 TRAE SOLO 完成 :white_check_mark:

本作品使用 TRAE SOLO 完成 :white_check_mark:
(备注:由于还没有Windows版本solo客户端,Trae IDE solo模式已经完成可用,目前通过Solo web进行再次实践。最终提交完整可用版本)