VPS 宕机或服务异常往往发生在半夜,人工盯着屏幕不现实,这时候构建一套 AI Agent 运维工作流就能救命。主机选今天聊的这套方案,不是为了炫技,而是实打实地解决“发现问题到生成处理建议”的闭环。通过 n8n 串联监控数据与 LLM(大语言模型),能让服务器具备初步的“自诊”能力,把运维从繁琐的日志排查中解放出来。

AI Agent 运维工作流核心架构
别把这套系统想得太复杂,核心就三个步骤:数据采集、逻辑编排、智能分析。
1.数据采集:在 VPS 本地运行脚本,抓取 CPU、内存、磁盘 IO 以及关键服务的日志片段。
2.逻辑编排:这是 n8n 的主场,负责定时触发任务,判断指标是否触发阈值(比如 CPU > 90% 持续 2 分钟),如果触发,则将数据打包发给 LLM。
3.智能分析:LLM 充当“大脑”,接收异常数据和日志,结合其知识库分析原因,输出具体的排查建议或修复命令。
这套架构不属于完全的“自动驾驶”,更像是给服务器配了个“24小时值班副驾驶”,它负责读报、给建议,你负责拍板。
VPS 部署 AI 工具基础环境
在开始编排工作流之前,得先把地基打牢。n8n 和相关的脚本都依赖 Docker 运行,环境不对,后面全是坑。
确保你的系统安装了 Docker 和 Docker Compose。没装的执行下面这行,CentOS 和 Debian/Ubuntu 通用:
curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
systemctl start docker
systemctl enable docker
创建一个专门的工作目录,别把东西乱扔:
mkdir -p /data/ops-agent
cd /data/ops-agent
Docker 部署 n8n 自动化运维平台
n8n 是这套流程的神经中枢。我们用 Docker Compose 部署,方便后期管理。
在 `/data/ops-agent` 目录下创建 `docker-compose.yml`:
yaml
version: "3.8"
services:
n8n:
image: n8nio/n8n
container_name: n8n_ops
restart: always
ports:
– "5678:5678"
environment:
– N8N_BASIC_AUTH_ACTIVE=true
– N8N_BASIC_AUTH_USER=admin # 务必修改默认账号
– N8N_BASIC_AUTH_PASSWORD=your_strong_password # 务必修改强密码
– WEBHOOK_URL=http://your_vps_ip:5678/ # 替换为你的IP或域名
volumes:
– n8n_data:/home/node/.n8n
command: n8n start
volumes:
n8n_data:
启动它:
docker-compose up -d
访问 `http://你的VPS_IP:5678`,登录后进入 n8n 界面。这时候 n8n 还是个空壳,需要喂给它数据。
监控数据采集与脚本编写
n8n 自带一些监控节点,但对于深度的系统故障,还是本地脚本最靠谱。写个简单的 Shell 脚本获取关键指标。
在 VPS 上创建 `check_system.sh`:
#!/bin/bash
echo "{
\"timestamp\": \"$(date +%s)\",
\"cpu_usage\": \"$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 – $1}')\",
\"mem_usage\": \"$(free | grep Mem | awk '{printf("%.2f", $3/$2 * 100.0)}')\",
\"disk_usage\": \"$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')\",
\"last_logs\": \"$(journalctl -n 5 –no-pager | tail -n 5)\"
}"
给脚本执行权限:
chmod +x check_system.sh
你可以手动运行 `./check_system.sh` 看看输出是不是标准的 JSON 格式,n8n 处理 JSON 最顺手。
n8n 自动化编排与 LLM 对接
回到 n8n 界面,新建一个 Workflow。
1.添加 Trigger(触发器):选择 `Schedule`(Cron),设置每 5 分钟跑一次。生产环境建议根据业务压力调整频率,太频繁会占用资源。
2.执行命令:添加 `Execute Command` 节点。因为 n8n 在容器里,直接跑宿主机脚本有点麻烦,这里推荐用 SSH 节点连回宿主机,或者把 n8n 的 `/var/run/docker.sock` 挂进去(不推荐新手这么干,安全风险大)。
*更稳妥的办法:在 VPS 上写个 Cron 定时跑脚本,把结果推送到 n8n 的 Webhook。
*假设我们用 Webhook 方式:*
* 在 n8n 里创建一个 `Webhook` 节点,方法设为 POST。
* 在 VPS Crontab 里添加:`*/5 * * * * /data/ops-agent/check_system.sh | curl -X POST -H "Content-Type: application/json" -d @- http://localhost:5678/webhook/你的hook路径`
3.判断逻辑:添加 `IF` 节点。判断 JSON 数据里的 `cpu_usage` 是否大于 90 或者 `disk_usage` 大于 85。不满足条件直接结束流程,满足条件则进入下一步。
4.LLM 分析:添加 `OpenAI` 节点(或者 `HTTP Request` 节点调用 DeepSeek、Claude 等 API)。
*Credential:填入你的 API Key。
*Prompt:这里很关键,要写得像老鸟。
*System Prompt:“你是一名资深 Linux 运维工程师。请根据以下系统监控数据和日志,分析可能出现的故障原因,并给出具体的排查步骤或修复命令。不要废话,直接给干货。”
*User Prompt:引用上一步的 JSON 数据。
5.输出结果:添加 `Send Email` 或者 `Telegram` 节点,把 LLM 的分析结果发给你。如果确实需要自动修复(比如重启 Nginx),可以在后面加一个 `Execute Command` 节点,但千万小心,别让 LLM 误删了数据库。
AI Agent 运维工作流实战排障
举个例子,VPS 上跑的 Docker 容器突然挂了。
脚本采集到的数据里,`cpu_usage` 可能不高,但 `last_logs` 里会有 `OOM Killer`(内存溢出杀手)的记录。
数据传给 LLM 后,Prompt 会引导它关注日志。LLM 分析 JSON 后,可能会返回类似这样的建议:
> “检测到 OOM Killer 日志,说明内存耗尽。建议执行 `free -h` 确认剩余内存,检查 `docker ps -a` 查看退出的容器,考虑增加 Swap 空间或限制容器内存使用。重启命令:`docker restart <container_id>`。”
这个过程比你自己半夜迷迷糊糊登服务器敲命令要快得多,而且能帮你理清思路。
老鸟叮嘱
这套工作流能跑起来,但要在生产环境活下去,还得注意几个坑:
1.API Key 别乱丢:n8n 的配置文件里别明文写 API Key,用 n8n 自带的 Credentials 管理,并且设置好环境变量。
2.别迷信 LLM:LLM 给的命令,尤其是 `rm -rf` 这种破坏性的,千万别直接让 n8n 自动执行。让它“建议”,你来“审核”。
3.日志轮转:脚本里的 `journalctl -n 5` 只取最后几行,别把几百 MB 的日志全塞给 LLM,Token 烧不起,上下文也撑爆。
4.n8n 内存占用:n8n 本身是基于 Node.js 的,内存占用不小。建议给 VPS 至少留 1GB 内存给它,或者加个 Swap。
5.端口安全:n8n 的 5678 端口不要直接暴露在公网。必须用 Nginx 做反向代理,加上 Basic Auth 或者 IP 白名单,否则你的服务器就是别人的肉鸡。
FAQ
Q1:这套 AI Agent 运维工作流能完全替代人工运维吗?
不能。它目前更适合做“辅助诊断”和“常规巡检”。面对复杂的硬件故障或网络链路问题,LLM 的分析往往不够准确,最终决策必须由人来做。
Q2:VPS 配置很低,能跑 n8n 和本地 LLM 吗?
跑 n8n 问题不大,但跑本地 LLM(如 Ollama)对显存和内存要求极高。低配 VPS 建议调用云端 API(如 DeepSeek、GPT-4o-mini),成本更低,响应更快。
Q3:除了 CPU 和内存,还能监控什么?
只要脚本能量化,都能监控。比如网站响应时间(用 `curl -o /dev/null -s -w "%{time_total}\n"`)、SSL 证书有效期、数据库连接数等。
Q4:n8n 的 Workflow 调试麻烦吗?
刚开始有点麻烦,建议先手动执行 Webhook 发送测试数据,用 n8n 的“Execute Workflow”功能单步调试,确保 JSON 格式解析正确后再上定时任务。
Q5:如果 n8n 自己挂了怎么办?
这是经典的“监控者悖论”。建议用系统级的服务(如 systemd)管理 n8n 容器,或者用另一台低配机器做主备监控。对于单机场景,给 n8n 容器设置 `restart: always` 是底线。
通过这套 VPS 部署 AI 工具的方案,我们实际上是把运维经验“固化”到了 Prompt 和工作流里。随着日志数据的积累和 Prompt 的优化,这个 AI Agent 会越来越懂你的服务器,成为你最得力的运维助手。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10080.html 商家投稿邮箱:zhujixuanblog@qq.com
