网站挂了半天才发现,这种损失谁都不想遇到。在主机选的实战经验里,单纯靠人工刷新页面不仅累,而且不可靠。利用 AI Agent 和自动化工作流(如 n8n)定时检测 HTTP 状态码和响应时间,能让你在宕机第一秒收到通知。这套方案不依赖昂贵的第三方监控服务,在自己的 VPS 上就能搞定,数据更安全,定制性也更强。

VPS 部署 n8n 自动化工作流环境
n8n 是目前最灵活的开源自动化工具之一,非常适合用来搭建轻量级的监控 Agent。它支持 Docker 部署,环境隔离好,不会把系统搞乱。
先确保你的 VPS 安装了 Docker 和 Docker Compose。创建一个工作目录,新建 `docker-compose.yml` 文件:
yaml
version: "3.8"
services:
n8n:
image: n8nio/n8n
restart: always
ports:
– "5678:5678"
environment:
– N8N_BASIC_AUTH_ACTIVE=true
– N8N_BASIC_AUTH_USER=admin # 建议修改默认用户名
– N8N_BASIC_AUTH_PASSWORD=your_strong_password # 务必设置强密码
– TZ=Asia/Shanghai
volumes:
– n8n_data:/home/node/.n8n
– /etc/localtime:/etc/localtime:ro
volumes:
n8n_data:
执行启动命令:
docker-compose up -d
启动后,访问 `http://你的服务器IP:5678`,输入上面的账号密码登录。n8n 的界面很直观,左侧是节点库,中间是画布。
配置 HTTP 状态码检测 Agent
进入 n8n 编辑器,我们要创建一个新的 Workflow。这个 Agent 的逻辑很简单:定时触发 -> 发起请求 -> 判断状态 -> 发送告警。
设置定时触发器
在左侧搜索 `Schedule Trigger` 节点,拖入画布。点击节点,设置触发规则。
*Rule: 选择 `Every Minute` 或者 `Every X Minutes`。
*Interval: 建议设置为 5 分钟。太频繁会消耗服务器资源,太慢则反应迟钝。
对于关键业务,可以设置为 1 分钟;普通博客或展示页,5-10 分钟足够。
配置 HTTP 请求节点
搜索 `HTTP Request` 节点,连接到定时器后面。这是 Agent 的“眼睛”,负责去查看网站死活。
*Method: 选择 `GET`。
*URL: 填入你要监控的目标网址,例如 `https://zhujixuan.com`。
*Options: 勾选 `Response Format` 为 `String` 或 `JSON`,方便后续处理。
*Timeout: 设置超时时间,建议 5000ms (5秒)。如果 5 秒都没反应,对用户来说基本等同于挂了。
点击测试节点,看看能不能正常返回数据。如果这里报错,先检查你的 VPS 网络能不能访问目标站,或者 DNS 解析有没有问题。
异常状态判断与告警逻辑
搜索 `IF` 节点,连接到 HTTP Request 节点。我们需要判断返回的状态码。
*Conditions: 设置判断逻辑。
*Value 1: 选择 `HTTP Request` 节点的输出数据,路径通常是 `Code` 或 `statusCode`(取决于 n8n 版本,点击右侧的 JSON 数据查看具体字段名)。
*Operation: 选择 `Not Equal` (不等于)。
*Value 2: 输入 `200`。
逻辑是:如果状态码不等于 200,就走 `TRUE` 分支(告警流程);如果是 200,就走 `FALSE` 分支(忽略或记录日志)。
接下来处理告警。以 Telegram 为例(推荐,延迟低,支持 Markdown),搜索 `Telegram` 节点。
*Chat ID: 填入你的 Telegram ID(需要先跟 @BotFather 对话获取 Token,并发送一条消息给机器人,通过 `getUpdates` 接口获取 Chat ID)。
*Text: 输入告警文案,可以使用变量,例如 `⚠️ 网站告警:{{ $json.url }} 状态码异常:{{ $json.code }}`。
把 Telegram 节点连在 `IF` 节点的 `TRUE` 输出口上。这样,一旦检测到非 200 状态码,消息立马推送到手机。
监控响应时间与性能阈值
有时候状态码是 200,但页面加载慢如蜗牛,这也不行。我们需要监控响应时间,让 AI Agent 更智能地判断性能问题。
在 `HTTP Request` 节点后面,再加一个 `IF` 节点。
*Value 1: 选择 `HTTP Request` 节点的 `responseTime` 字段(单位通常是毫秒)。
*Operation: 选择 `Larger` (大于)。
*Value 2: 输入阈值,例如 `2000` (2秒)。
如果响应时间超过 2 秒,同样触发告警流程。你可以把两个 `IF` 节点的 `TRUE` 分支汇聚到同一个 Telegram 节点,或者用 `Merge` 节点合并数据,让告警信息更详细,比如:“状态码 200,但响应时间 3500ms,请检查服务器负载”。
老鸟叮嘱:避坑指南
搞监控容易,搞稳定难。这几个坑是新手最容易踩的:
1.监控者本身的单点故障:千万别把 n8n 和你要监控的网站放在同一台 VPS 上。一旦机器宕机,网站挂了,监控 Agent 也挂了,你什么都收不到。建议用一台配置极低、网络稳定的独立 VPS 或家里的 NAS 跑监控。
2.不要裸露后台端口:n8n 的 5678 端口绝对不能直接暴露在公网。必须用 Nginx 做反向代理,并配置 SSL 证书和 Basic Auth。否则,你的自动化工作流会被别人控制,甚至用来挖矿。
3.API Key 安全:如果在 n8n 里调用了 OpenAI 或其他 API Key,务必使用 n8n 的 Credentials 管理功能加密存储,不要直接明文写在 Workflow 里。
4.日志与限流:如果是监控大量站点,注意 n8n 的日志文件大小,定期清理,防止磁盘写满。同时,不要对同一目标发起过高频率的请求,容易被对方防火墙拉黑。
这套基于 n8n 的 AI Agent 监控方案,本质上是利用自动化替代人工巡检。它不需要复杂的编程基础,通过拖拽节点就能实现强大的故障发现能力。对于维护多个站点的站长来说,这是提升运维效率的利器。
FAQ
Q1:除了 Telegram,还能通过什么方式接收告警?
A:n8n 支持邮件、企业微信、钉钉、Slack、Server酱等多种方式。只要对方提供 Webhook 或 API,都能对接。国内推荐配合 Server酱 推送到微信,或者直接发邮件。
Q2:n8n 占用资源高吗?低配 VPS 能跑吗?
A:n8n 本身是基于 Node.js 的,内存占用相对友好。闲置状态下大约占用 200MB-400MB 内存。只要不是跑极其复杂的循环逻辑,1核1G的机器也能勉强带动,建议 1核2G 起步以保证稳定。
Q3:能监控 SSL 证书过期时间吗?
A:可以。在 Workflow 中增加一个专门检测证书有效期的节点(或使用 HTTP Request 获取证书信息),计算剩余天数,如果少于 7 天就触发告警,避免证书过期导致网站打不开。
Q4:为什么我的 HTTP Request 节点一直报错?
A:常见原因包括:目标网站开启了防爬虫 UA 检测(需要在 HTTP Request Header 里伪装 UA)、DNS 解析错误、或者你的 VPS IP 被目标防火墙拉黑。先在 VPS 里用 `curl -I https://目标网址` 排查基础网络问题。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10193.html 商家投稿邮箱:zhujixuanblog@qq.com
