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

AI 自动监控网站异常:Uptime、日志、告警和 Teams 通知

网站挂了,你是最后一个知道的。手动盯监控太累,日志堆成山也翻不过来。这篇文章直接教你用 VPS 搭一套 AI 自动监控方案:整合 Uptime 检测、日志异常分析、多渠道告警,最后把通知推送到 Teams。全程基于 Docker 和 n8n 编排,连 AI 分析都交给本地 Ollama 或云端 API,适合站长和运维直接抄作业。

zhujixuan TASK 146

架构拆解:Uptime、日志、告警和 Teams 通知怎么联动

这套方案不依赖单一工具,而是用 n8n 做工作流引擎,把三个模块串起来:

Uptime 检测:用 Uptime Kuma 或自定义 HTTP 探活脚本,定时检测目标网站状态码和响应时间。

日志采集:通过 Filebeat 或 rsyslog 把 Nginx、应用日志推送到 Loki,再用 n8n 定时查询异常模式。

AI 分析:把异常数据发给本地 Ollama(或 OpenAI API),让 AI 判断是否属于真实故障并给出修复建议。

告警通知:通过 n8n 的 Microsoft Teams 节点发送卡片通知,包含故障时间、日志摘要、AI 分析结论。

这个组合的好处是:所有组件都可以跑在一台 2C4G 的 VPS 上,成本可控,且 AI 部分能过滤误报。

第一步:部署 Uptime Kuma 做基础监控

Uptime Kuma 是个轻量开源监控面板,支持 HTTP、Ping、端口检测,自带告警推送。用 Docker 部署最快:

mkdir -p /opt/uptime-kuma/data
cd /opt/uptime-kuma

docker run -d –restart=always \
-p 3001:3001 \
-v $(pwd)/data:/app/data \
–name uptime-kuma \
louislam/uptime-kuma:latest

部署后访问 `http://你的VPS_IP:3001`,设置管理员账号。添加监控项时,填入网站 URL,检测间隔建议 60 秒。通知渠道先不配,后面统一由 n8n 接管。

老鸟叮嘱:Uptime Kuma 默认告警邮件容易进垃圾箱,而且没法做 AI 分析。所以我们只用它做数据采集,告警逻辑全部交给 n8n。

第二步:用 n8n 搭建自动化工作流

n8n 是可视化工作流引擎,支持 Webhook、定时触发、HTTP 请求、AI 节点。同样用 Docker 部署:

mkdir -p /opt/n8n/data
docker run -d –restart=always \
-p 5678:5678 \
-v /opt/n8n/data:/home/node/.n8n \
-e N8N_SECURE_COOKIE=false \
–name n8n \
n8nio/n8n:latest

首次访问 `http://你的VPS_IP:5678`,创建管理员。重点配置两个触发器:

1.定时触发器:每 5 分钟调用 Uptime Kuma 的 API 获取监控状态。Uptime Kuma 的 API 地址是 `http://uptime-kuma:3001/api/v1/monitors`,需要先创建 API Token(在设置里生成)。
2.Webhook 触发器:让 Uptime Kuma 在检测到宕机时直接回调 n8n,这样实时性更高。在 Uptime Kuma 的通知设置里选择 Webhook,填写 n8n 的 Webhook URL。

老鸟叮嘱:n8n 容器和 Uptime Kuma 容器如果在同一台机器,建议用 Docker 网络连接。创建自定义网络后,容器名就是主机名,避免写死 IP。

第三步:接入 AI 分析模块——Ollama 或 OpenAI

AI 的作用是判断“是真挂了还是网络波动”以及“日志里有没有攻击特征”。我推荐先跑本地 Ollama,省去 API 费用。

部署 Ollama

docker run -d –restart=always \
-p 11434:11434 \
-v /opt/ollama:/root/.ollama \
–name ollama \
ollama/ollama:latest

docker exec ollama ollama pull qwen2:7b

在 n8n 中调用 Ollama

n8n 的 HTTP Request 节点可以调用 Ollama 的 `/api/generate` 接口。构造 prompt 时,把 Uptime 状态码、响应时间、最近 50 条日志摘要一起传进去,让 AI 输出“故障类型”和“建议操作”。

示例 prompt:

你是一个网站运维专家。以下是最近一次的监控数据:

• 状态码:502

• 响应时间:30s(超时)

• 日志片段:[error] connect() to upstream failed (111: Connection refused)

请判断是否属于严重故障,并给出可能原因和修复步骤。输出格式为JSON:{"severity":"critical|warning|info","reason":"…","fix":"…"}

如果选择云端 API(如 Claude、GPT)

在 n8n 的 OpenAI 节点中配置 API Key,模型选 `gpt-4o-mini` 或 `claude-3-haiku`,成本极低。注意 Key 不要写死在代码里,用 n8n 的环境变量或凭证管理。

老鸟叮嘱:AI 分析不要实时触发每条日志,否则 VPS 负载和 API 费用会飙升。建议只在 Uptime 检测到异常时才触发 AI 分析,或者每小时做一次日志批量分析。

第四步:配置 Microsoft Teams 通知

Teams 的 Incoming Webhook 是最简单的接入方式。在 Teams 频道中点击“连接器”,搜索“Incoming Webhook”,命名后生成一个 URL。

在 n8n 中,使用Microsoft Teams节点(或直接 HTTP Request 节点 POST 到 Webhook URL)。消息体支持 Adaptive Card 格式,可以展示故障时间、AI 分析结果、修复建议。

示例 Adaptive Card JSON(简化版):

json
{
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"themeColor": "FF0000",
"title": "⚠️ 网站异常告警",
"text": "目标: example.com\n状态码: 502\nAI 分析: 后端服务无响应,可能 PHP-FPM 进程挂掉\n建议: `systemctl restart php-fpm`",
"potentialAction": [
{
"@type": "OpenUri",
"name": "查看监控面板",
"targets": [{"os": "default", "uri": "http://你的VPS_IP:3001"}]
}
]
}

在 n8n 工作流中,把 AI 分析节点的输出映射到上述 JSON 模板中,然后用 HTTP Request 节点 POST 到 Teams Webhook URL。

第五步:日志异常检测的进阶玩法

除了 Uptime 检测,还可以让 AI 定期扫描日志文件。用 n8n 的Execute Command节点执行 `tail -n 100 /var/log/nginx/error.log`,把结果发给 AI。

但注意权限:n8n 容器默认没有宿主日志访问权限。两种解法:

• 把宿主机日志目录挂载到 n8n 容器,例如 `-v /var/log:/var/log:ro`

• 或者用 Filebeat 把日志发到 Loki,n8n 通过 Loki API 查询

推荐后者,因为 Loki 本身支持标签和全文搜索,查询效率高。部署 Loki 和 Grafana 的 Docker-compose 网上很多,这里不再赘述。

老鸟叮嘱:日志分析不要全量扫描,只关注 ERROR、FATAL、Timeout 等关键词。AI 模型对长文本有 token 限制,每次只传最近 200 行日志即可。

常见坑点和避坑指南

端口放行:VPS 安全组要放行 3001(Uptime Kuma)、5678(n8n)、11434(Ollama),但建议用 Nginx 反向代理加 Basic Auth 或 Cloudflare Tunnel,不要裸奔公网。

API Key 安全:n8n 的凭证存储默认加密,但不要用 root 运行 n8n 容器,创建专用用户。

AI 幻觉:本地小模型有时会胡编修复命令。建议在 prompt 里加一句“如果无法确定,请输出‘需要人工排查’”。

告警风暴:Uptime 检测间隔设 60 秒,n8n 工作流加去重逻辑(比如同一故障 15 分钟内只发一次通知)。

FAQ

Q:最低需要什么配置的 VPS?
A:2 核 4G 内存可以跑 Uptime Kuma + n8n + Ollama(7B 模型)。如果只用云端 API,2 核 2G 也够。

Q:能否同时监控多个网站?
A:可以。Uptime Kuma 支持添加多个监控项,n8n 工作流里用循环节点遍历所有异常状态。

Q:Teams 通知收不到怎么办?
A:检查 Webhook URL 是否正确,Teams 频道是否允许外部 Webhook。n8n 的 HTTP 节点返回 200 才算成功。

Q:AI 分析能替代人工吗?
A:不能完全替代,但能过滤 80% 的误报。复杂故障(如数据库损坏、磁盘满)仍需人工介入。

Q:日志文件太大,AI 处理不过来怎么办?
A:只分析最近 5 分钟的新增日志。n8n 可以用 `tail -f` 配合超时截取,或者用 Loki 的 `range` 查询。

Q:我想用 Claude Code 或 Hermes Agent 替代 n8n,可以吗?
A:可以,但需要自己写脚本。Claude Code 适合一次性任务,Hermes Agent 适合持续监控。n8n 胜在可视化编排,上手更快。

总结

这套 AI 自动监控方案把 Uptime、日志分析、AI 决策和 Teams 通知串成一条线,核心是用 n8n 做胶水,Ollama 做大脑。部署完成后,你只需要在 Teams 里接收卡片,根据 AI 建议执行命令。不用再每天手动翻日志,也不用担心漏掉宕机。如果你手头有闲置的 VPS,花半小时搭起来,比任何付费监控都灵活。

**相关阅读:**

– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)
– [n8n VPS 部署教程:搭建自己的自动化工作流平台](https://www.zhujixuan.com/jishujiaocheng/9892.html)
– [Codex、Claude Code、OpenClaw、Hermes Agent、Ollama、n8n 分别适合什么场景](https://www.zhujixuan.com/jishujiaocheng/9759.html)

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