【Code-with-SOLO】“Patrol”智能系统巡检工具:一位IT老兵与SOLO的自动化运维实战


一、摘要

我用 TRAE SOLO 开发了 Patrol —— 一款轻量级、可配置的系统巡检工具。它通过 SSH 自动采集多台服务器状态,一键生成 HTML/JSON/TXT 多格式报告,支持并发巡检和跨系统兼容(Redhat系、Debian系验证,其他Linux应该也支持)。目标是让运维人员从每天重复的“敲命令、盯屏幕”中解放出来。

二、背景

我是一名“IT老兵”,从研发转运维,日常维护多台服务器。传统巡检方式:手动 SSH 登录每台机器 → 敲命令 → 肉眼判断异常 → 记录结果。耗时、重复、容易遗漏 。生产环境对安装第三方软件有严格限制,我需要一个纯 Shell、无侵入、可配置 的自动化工具。这次借助 TRAE SOLO,目标是快速搭建一个可落地的巡检框架。

三、实践过程

任务拆解

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

  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,请修复”

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

四、成果展示

项目结构

patrol/
├── patrol.sh          # 主调度脚本
├── remote_collector.sh # 远程数据采集脚本
├── install.sh         # 安装脚本
├── conf/              # 配置目录
│   ├── servers.conf             # 服务器配置
│   ├── servers.conf.example     # 服务器配置示例
│   ├── checks.conf              # 检查项配置
│   ├── checks.conf.example      # 检查项配置示例
│   ├── check_groups.conf        # 检查项分组配置
│   └── check_groups.conf.example # 检查项分组配置示例
├── logs/              # 日志目录
├── bin/               # 二进制工具目录(如 jq)
└── web/               # 前端页面目录
    ├── index.html              # 报告列表页面
    ├── report.html             # 概览报告页面
    ├── report_detailed.html    # 详细报告页面
    ├── trend.html              # 趋势分析页面
    ├── css/                    # 样式文件
    ├── js/                     # JavaScript 文件
    ├── data/                   # 报告数据目录
    └── demo_data/              # 演示数据目录

运行结果

  • 成功采集多台服务器

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

  • 生成 JSON + HTML + TXT 报告

代码仓库: GitHub - uncleask/patrol: 轻量级分布式系统巡检工具 · GitHub

五、 效果与总结

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

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

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

六、实践结果

本项目全程使用 TRAE SOLO,协作模式包括:

  1. 需求拆解:向 SOLO 描述巡检场景,生成项目骨架
  2. 代码迭代:通过多轮对话修正 Shell 兼容性问题(如 GROUPS 变量冲突、跨系统 top 输出差异)
  3. 踩坑修复:SOLO 帮助解决了子 shell 变量丢失、换行符字面量等问题
  4. 前端开发:SOLO 生成 HTML 报告模板和趋势分析页面

七、附录

网盘分享

链接:夸克网盘分享
提取码:BDd1

部分截图

最新全量包v1.0.0

  1. 已经分享网盘:

链接:夸克网盘分享
提取码:BDd1

  1. 增加了云环境(本地)测试验证说明
quick-solo-run.sh

快来看看你们的solo分配的云端环境资源吧

  1. solo下的最近结果展示




1 个赞