1. 首页 > 技术教程 > 正文

VPS 巡检日报怎么自动生成?AI Agent 输出资源状态、异常项和处理建议

很多运维人员每天早起第一件事就是登录服务器看资源负载,生怕哪个服务挂了没收到报警。主机选发现,单纯靠 Zabbix 或 Prometheus 发送阈值报警虽然能发现问题,但缺乏“日报”这种全局视角,尤其是对于异常原因的排查和修复建议,传统监控往往只给现象不给解法。利用 AI Agent 自动生成 VPS 巡检日报,不仅能汇总 CPU、内存、磁盘 IO 等核心指标,还能根据日志和异常项直接给出处理建议,把被动运维变成辅助决策。

zhujixuan TASK 198

VPS巡检日报自动化架构设计

要实现自动巡检,核心在于“数据采集 + AI 分析 + 结果推送”这三个环节。传统的 Shell 脚本只能把数据发邮件,人还得自己看。引入 AI Agent 后,脚本只负责把原始指标(如 `top` 输出、`dmesg` 日志、磁盘使用率)扔给大模型,由大模型负责总结现状、识别风险并生成 Markdown 格式的日报。

传统脚本与 AI Agent 的区别

普通脚本写死逻辑,比如“磁盘 > 90% 就报警”,但无法区分是日志暴涨还是数据增长。AI Agent 可以结合上下文判断,例如发现 `/var/log/nginx` 占用过大,会建议“配置 logrotate 或清理过期日志”。这种具备推理能力的巡检,才是真正的智能化。

基于 n8n 和 Ollama 部署 AI Agent 工作流

这里推荐使用 n8n 作为工作流编排工具,配合本地部署的 Ollama 运行轻量级模型(如 Qwen2.5 或 DeepSeek-Coder),既保护数据隐私,又不需要调用昂贵的 OpenAI API。

Docker 环境快速搭建

先准备一台配置尚可的 VPS,建议 2核4G 以上,因为本地跑模型稍微吃内存。直接用 Docker Compose 拉起 n8n 和 Ollama。

创建 `docker-compose.yml`:

yaml
version: "3.8"
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
– "11434:11434"
volumes:
– ollama_data:/root/.ollama # 持久化模型数据

n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
ports:
– "5678:5678"
environment:
– N8N_BASIC_AUTH_ACTIVE=true
– N8N_BASIC_AUTH_USER=admin
– N8N_BASIC_AUTH_PASSWORD=your_strong_password # 务必修改密码
– WEBHOOK_URL=https://your-domain.com/ # 配置反向代理后填写
volumes:
– n8n_data:/home/node/.n8n
depends_on:
– ollama

volumes:
ollama_data:
n8n_data:

启动服务:

docker-compose up -d

服务跑起来后,先拉取模型。进入 Ollama 容器:

docker exec -it ollama ollama pull qwen2.5:7b

编写数据采集脚本

在 VPS 本地写一个简单的 Shell 脚本,用来收集巡检数据。脚本输出格式最好是 JSON,方便 n8n 解析。

创建 `check.sh`:

#!/bin/bash
CPU_LOAD=$(uptime | awk -F'load average:' '{print $2}')
MEM_USAGE=$(free | grep Mem | awk '{printf("%.2f%%"), $3/$2 * 100.0}')
DISK_INFO=$(df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5 " " $6}')
SYS_LOG=$(journalctl -p err -n 10 –no-pager)
DOCKER_PS=$(docker ps -a –format "table {{.Names}}\t{{.Status}}" 2>/dev/null || echo "Docker not running")

cat <<EOF
{
"timestamp": "$(date '+%Y-%m-%d %H:%M:%S')",
"cpu_load": "$CPU_LOAD",
"mem_usage": "$MEM_USAGE",
"disk_info": "$DISK_INFO",
"system_errors": "$SYS_LOG",
"docker_status": "$DOCKER_PS"
}
EOF

给脚本执行权限并测试:

chmod +x check.sh
./check.sh

配置 AI Agent 分析节点

打开 n8n 界面(`http://你的IP:5678`),新建 Workflow。

1.Schedule Trigger(定时触发):设置每天早上 8 点触发。
2.SSH Command(远程执行):如果是单机巡检,可以用 `Execute Command` 节点直接跑上面的脚本;如果是监控多台 VPS,用 `SSH` 节点登录目标机器执行 `check.sh`。
3.AI Agent(LLM Chain)
* 添加 `AI Agent` 节点(或 `OpenAI` 节点配置自定义 Base URL 指向 Ollama)。
*模型:选择 `qwen2.5:7b`(Base URL 填 `http://ollama:11434/v1`)。
*System Prompt:这是关键,直接决定日报质量。

System Prompt 参考

你是一名资深 Linux 运维专家。请分析以下 JSON 格式的服务器巡检数据。
1. 汇总当前的 CPU、内存和磁盘状态。
2. 检查 system_errors 中是否有严重错误(如 OOM Killer、硬盘读写错误、网卡 down)。
3. 检查 docker_status,看是否有容器频繁重启。
4. 输出一份 Markdown 格式的日报,包含:
– 资源概览
– 异常项详情(如有)
– 针对每个异常项的具体处理建议或排查命令。
语气要专业、简洁,不要废话。

4.Output(输出):可以将结果发送到 Telegram、钉钉、企业微信,或者直接存入数据库。

资源状态解读与异常处理建议

AI Agent 的优势在于能根据不同报错给出针对性建议,而不是千篇一律的“负载高”。

CPU 与内存负载异常

如果 `top` 数据显示 CPU 长期 100%,AI 结合进程列表可能会发现是某个恶意挖矿进程,建议执行 `htop` 定位并 `kill`。如果是内存不足导致 OOM(Out of Memory),AI 会分析日志中的 `Out of memory: Kill process` 信息,建议增加 Swap 分区或升级配置,而不是简单重启服务。

磁盘空间与 IO 瓶颈

磁盘报警最常见。AI 能识别出 `/var/log` 下巨大的日志文件,建议使用 `logrotate`;如果是 Docker 镜像占满 `/var/lib/docker`,会建议执行 `docker system prune -a` 清理未使用的镜像。对于 IO 高的问题,AI 可能会建议用 `iotop` 查看是哪个进程在疯狂读写。

老鸟叮嘱

1.数据脱敏:把日志扔给公网 AI(如 GPT-4)前,务必过滤 IP 地址、域名和敏感 API Key。本地跑 Ollama 没这个问题,但要注意 VPS 内存是否够用,7B 模型至少预留 4GB 给它。
2.Prompt 调优:第一次生成的日报可能不够精简,多调整 System Prompt,比如加上“只输出 Markdown 表格,不要解释什么是 CPU”。
3.不要裸露端口:n8n 的 5678 端口和 Ollama 的 11434 端口绝对不能直接暴露在公网,必须用 Nginx 做反向代理并加上 Basic Auth 或 IP 白名单。黑客扫描到 Ollama 接口可以直接执行系统命令,风险极大。
4.脚本超时:SSH 执行脚本时设置好超时时间(比如 30 秒),防止网络抖动导致 Workflow 卡死。

FAQ

1. VPS 配置低能不能跑这套方案?
如果 VPS 只有 512MB 或 1GB 内存,不要在本地跑 Ollama。可以使用 n8n 的 HTTP Request 节点调用 DeepSeek 或 OpenAI 的 API,费用极低且省资源。

2. 除了日报,能实现实时报警吗?
可以。在 n8n 中增加一个 Webhook 节点,配合 Prometheus Alertmanager 或 Server酱,一旦脚本检测到致命错误,立即触发 Workflow 调用 AI 生成简报并推送到手机。

3. AI 分析会不会误报?
初期可能会把一些 Warning 当成 Error。需要在 Prompt 里明确“只关注 Error 级别日志”,或者在脚本端做一层过滤,只把真正异常的数据喂给 AI。

4. 如何监控多台服务器?
不需要每台都装 n8n。只需在一台中心服务器部署 n8n,通过 SSH 节点分别去连接其他被控机执行 `check.sh`,汇总后统一分析。

5. 生成的日报可以存档吗?
n8n 可以连接 MySQL、PostgreSQL 或直接写入本地 Markdown 文件。建议将日报存入数据库,方便以后做月度或季度的资源趋势分析。

通过这套 AI Agent 工作流,原本需要半小时的人工巡检变成了自动化生成,不仅效率提升,更重要的是让冷冰冰的数据变成了可执行的运维建议。

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10110.html 商家投稿邮箱:zhujixuanblog@qq.com