OpenClaw自动化巡检:千问3.5-9B监控网站状态

1. 为什么需要自动化网站巡检?

作为个人站长,我每天最担心的就是网站突然宕机而自己毫不知情。去年我的博客因为CDN配置错误导致连续8小时无法访问,直到读者发邮件投诉才发现问题。传统监控方案如UptimeRobot虽然简单,但无法满足定制化需求——比如检测特定页面内容变更或结合业务逻辑判断异常。

这正是我选择OpenClaw+千问3.5-9B搭建自动化巡检系统的原因。这套方案最大的特点是:

  • 完全本地化:所有检查逻辑和敏感数据(如监控目标URL、报警密钥)都保存在自己电脑上
  • 深度可定制:不仅能检查HTTP状态码,还能通过大模型分析页面内容语义变化
  • 成本极低:相比年费几百美元的商业监控服务,只需消耗少量模型Token

2. 系统架构与核心组件

2.1 技术选型思路

我的方案由三个核心部分组成:

  1. OpenClaw执行引擎:负责定时触发任务、操作系统级操作(如发送HTTP请求、读取文件)
  2. 千问3.5-9B模型:用于内容变更的语义分析、异常判断逻辑生成
  3. 自定义Skill模块:封装了Prometheus指标导出、飞书消息推送等工具链
# 技能树结构示例
monitoring-system/
├── website-checker       # 主检查模块
├── prometheus-exporter   # 指标输出
└── feishu-notifier       # 报警通道

2.2 模型接入关键配置

~/.openclaw/openclaw.json中配置本地模型端点:

{
  "models": {
    "providers": {
      "qwen-local": {
        "baseUrl": "http://localhost:8000/v1",
        "api": "openai-completions",
        "models": [{
          "id": "qwen3.5-9b",
          "contextWindow": 32768
        }]
      }
    }
  }
}

这里遇到第一个坑:千问3.5-9B的默认端口是8000,但某些Docker镜像可能使用不同端口。建议先用curl http://localhost:8000/v1/models验证接口可用性。

3. 实现网站监控全流程

3.1 基础检查模块开发

创建website-checker技能的核心逻辑:

def check_website(url):
    try:
        response = requests.get(url, timeout=10)
        return {
            "status": response.status_code,
            "latency": response.elapsed.total_seconds(),
            "content_hash": hashlib.md5(response.text.encode()).hexdigest()
        }
    except Exception as e:
        return {"error": str(e)}

这个简单版本已经能捕获连接超时、SSL证书错误等基础问题。但真正的价值在于下一步的内容分析。

3.2 内容变更语义分析

通过千问3.5-9B实现智能比对:

def analyze_change(old_text, new_text):
    prompt = f"""比较两段网页内容差异:
    [旧内容]
    {old_text[:2000]}
    
    [新内容]
    {new_text[:2000]}
    
    请回答:
    1. 是否出现关键信息缺失(如价格、联系方式)
    2. 是否有疑似被黑内容(如赌博、色情关键词)
    3. 改动的商业价值评估(高/中/低)"""
    
    response = openclaw.models.generate(
        model="qwen3.5-9b",
        messages=[{"role": "user", "content": prompt}]
    )
    return response.choices[0].message.content

实践发现模型对中文网页的分析准确率明显高于正则表达式方案。例如它能识别出"产品价格从$99变为$199"这类语义变化,而传统方法只能发现数字变动。

3.3 报警策略设计

feishu-notifier中实现分级报警:

{
  "alert_rules": {
    "critical": ["status!=200", "error", "商业价值=高"],
    "warning": ["latency>3s", "商业价值=中"],
    "info": ["content_hash变化"]
  }
}

特别提醒:飞书机器人需要配置IP白名单。通过curl ifconfig.me获取公网IP后,记得在飞书开放平台添加该IP。

4. 高级功能扩展

4.1 Prometheus指标输出

配置prometheus-exporter技能后,可以在http://localhost:9090/metrics看到如下指标:

# HELP website_up 网站可用状态
# TYPE website_up gauge
website_up{url="https://example.com"} 1
website_latency_seconds{url="https://example.com"} 0.87

配合Grafana可以生成漂亮的监控看板,这是我使用的仪表盘配置片段:

{
  "panels": [{
    "title": "响应时间趋势",
    "type": "timeseries",
    "targets": [{
      "expr": "avg(website_latency_seconds) by (url)"
    }]
  }]
}

4.2 定时任务管理

利用OpenClaw的定时触发器功能,在配置文件中添加:

{
  "schedules": {
    "daily_check": {
      "cron": "0 9,21 * * *",
      "command": "openclaw skill run website-checker --urls=https://example.com,https://blog.example.com"
    }
  }
}

这里有个实用技巧:通过openclaw schedules list可以查看所有定时任务的下次执行时间,方便调试。

5. 实际运行效果与优化建议

运行一个月后,系统成功捕获到:

  • 3次CDN节点故障(状态码503)
  • 1次页面内容被篡改(植入菠菜广告)
  • 多次友链页面内容更新

资源消耗方面:

  • 千问3.5-9B平均每次分析消耗约1200 tokens
  • 内存占用稳定在4GB左右
  • 每日定时任务耗时约7分钟

建议优化方向:

  1. 对静态页面使用If-Modified-Since头减少带宽消耗
  2. 重要页面设置5分钟级的高频检查
  3. 将模型分析结果缓存24小时,避免重复分析未修改内容

这套方案特别适合监控10个以内的中小型网站。当需要监测更多目标时,建议拆分为多个OpenClaw实例运行。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐