AI Agent自动执行服务器巡检,生成巡检报告
如果你希望服务器巡检不再靠人工登录逐台敲命令,而是由 AI Agent 按计划自动采集指标、分析异常并输出报告,那么核心思路可以拆成三件事:用脚本采集原始数据,用 Agent 做分析和总结,用定时任务保证它自动跑。
本文面向零基础运维人员,带你从零搭出一套可落地的自动巡检流程,最终得到一份每天自动生成的巡检报告。
这套自动巡检适合什么场景
它最适合中小规模的 Linux 服务器环境,比如几台到几十台云主机、独立服务器或宝塔面板管理的机器。
典型用途包括:
- 每天固定时间检查 CPU、内存、磁盘、负载和关键进程;
- 发现磁盘快满、服务掉线、连接数异常时提前告警;
- 把原始指标整理成人类可读的报告,减少人工写巡检记录的时间。
需要提前说清楚:AI Agent 负责的是“分析、归纳和生成报告”,原始数据仍要由巡检脚本或系统命令采集。
让 Agent 直接执行高危命令并不安全,建议让脚本只读采集,Agent 只处理文本结果。
准备条件
动手前先确认三件事:
- 一台能 SSH 登录的 Linux 服务器,建议用 Ubuntu 20.04+ 或 CentOS 7+;
- 已安装 Python 3.8 以上,可用
python3 --version检查; - 一个可调用的 AI 模型接口(本地模型或云端 API 均可),并能通过命令行或 Python 调用。
如果机器上没有 jq、curl 这类常用工具,先安装:
# Ubuntu/Debian
apt update && apt install -y curl jq
# CentOS/RHEL
yum install -y curl jq
第一步:写一个只读巡检采集脚本
在 /opt/check/ 下新建 collect.sh,让它只输出文本,不改动系统状态:
#!/bin/bash
OUT=/opt/check/raw_$(date +%F).txt
echo "===== 巡检时间 $(date) =====" > $OUT
echo "--- 主机名 ---" >> $OUT
hostname >> $OUT
echo "--- 负载 ---" >> $OUT
uptime >> $OUT
echo "--- 内存 ---" >> $OUT
free -m >> $OUT
echo "--- 磁盘 ---" >> $OUT
df -h >> $OUT
echo "--- 占用最高的进程 ---" >> $OUT
ps aux --sort=-%cpu | head -6 >> $OUT
echo "--- 监听端口 ---" >> $OUT
ss -tlnp >> $OUT
赋予执行权限后手动跑一次:
chmod +x /opt/check/collect.sh
/opt/check/collect.sh
cat /opt/check/raw_$(date +%F).txt
验证标准:能看到负载、内存、磁盘、进程和端口几个区块,说明采集正常。
脚本里不要加入 rm、reboot、systemctl restart 这类写操作。
第二步:让 AI Agent 读取数据并生成报告
写一个 Python 脚本 report.py,把采集结果交给 Agent 分析,并要求它按固定格式输出:
import datetime, requests
raw = open(f"/opt/check/raw_{datetime.date.today()}.txt").read()
prompt = f"""你是服务器巡检助手。请阅读下面的只读采集数据,
输出中文巡检报告,包含:1) 总体结论 2) 异常项 3) 建议处理动作。
数据:\n{raw}"""
resp = requests.post(
"http://你的模型接口地址/v1/chat/completions",
json={"model": "你的模型名", "messages": [{"role": "user", "content": prompt}]},
timeout=60
)
report = resp.json()["choices"][0]["message"]["content"]
open(f"/opt/check/report_{datetime.date.today()}.md", "w").write(report)
print("报告已生成")
把接口地址和模型名替换成你实际使用的值。
运行 python3 /opt/check/report.py,如果提示“报告已生成”,再打开 /opt/check/report_日期.md 查看内容。判断标准:报告里应能明确指出磁盘使用率是否偏高、内存是否紧张等问题,而不是简单复述原始数据。
第三步:配置定时任务实现自动执行
用 crontab -e 添加一条计划任务,让脚本每天凌晨自动运行:
0 3 * * * /opt/check/collect.sh && /usr/bin/python3 /opt/check/report.py >> /opt/check/cron.log 2>&1
保存后查看是否写入成功:
crontab -l
结果验证:第二天检查 /opt/check/ 目录,应同时出现当天的 raw_日期.txt 和 report_日期.md;
如果没生成,先看 cron.log 里的报错。
避坑指南
- 不要给 Agent 写权限:让模型只分析文本,不直接连服务器执行命令,避免误删或误重启。
- cron 环境变量少:定时任务里建议写命令的绝对路径,例如
/usr/bin/python3,否则容易报“command not found”。 - 接口超时要有兜底:脚本里加
timeout参数,并在异常时记录日志,防止任务卡死。 - 报告别无限堆积:定期清理旧文件,例如在脚本末尾加
find /opt/check -name 'raw_*.txt' -mtime +30 -delete。 - 敏感信息脱敏:采集数据里如果含 IP、账号等,发给外部接口前先做替换处理。
怎么确认它真的在稳定工作
连续观察两到三天,重点看三处:cron.log 是否每次都有正常输出、报告文件是否按天生成、报告结论是否和手动执行 df -h、free -m 的结果一致。
只要这三点都稳定,就说明 AI Agent 自动执行服务器巡检、生成巡检报告的流程可以放心交给它了。
常见疑问
必须用云端大模型吗?
不一定,本地部署的模型同样可以通过接口调用,关键看你的机器性能和隐私要求。
一台 Agent 能管多台服务器吗?
可以。把每台机器的采集结果汇总到同一目录,再让 Agent 统一分析,就能生成一份多机汇总报告。
报告能自动发到邮箱或群机器人吗?
可以,在 Python 脚本末尾追加一段发送逻辑即可,建议先手动测试发送成功,再挂到定时任务里。