OpenClaw 服务器监控实战:CPU 异常自动排查、日志分析、告警通知

2026-03-23 · 由 ClawBrain AI 生成

引言

凌晨三点,手机突然响了,是服务器告警:CPU 使用率 98%。你半梦半迷地打开电脑,SSH 上去,先看 top,再翻日志,折腾半小时发现是某个定时任务写了死循环。这种经历,做过运维的人都不陌生。

传统的监控系统(Prometheus + Grafana、Zabbix)擅长采集数据和触发告警,但告警之后的排查工作仍然需要人工介入。OpenClaw 可以在这个环节发挥巨大作用:当告警触发时,自动登录服务器排查原因,分析日志,生成诊断报告,并将结果推送给运维人员。你收到的不再是一条"CPU 高了"的告警,而是一份完整的诊断结论。

场景描述:从告警到诊断的全自动化

假设你管理着 5 台应用服务器和 2 台数据库服务器。现有的 Prometheus 系统负责采集指标,当 CPU 超过 80% 持续 5 分钟时触发告警。我们的目标是:当告警触发时,OpenClaw 自动介入,执行一系列排查命令,分析结果,输出诊断报告。

第一步:配置服务器巡检工具

首先,在 OpenClaw 中定义一组服务器运维工具:

# tools/server_ops.yml
- name: check_cpu_top
  description: "查看 CPU 使用率最高的前 10 个进程"
  type: run_command
  config:
    command: "ssh {{host}} 'ps aux --sort=-%cpu | head -11'"
    parameters:
      host:
        type: string
        description: "服务器 IP 或主机名"

- name: check_system_load
  description: "查看系统负载和内存使用情况"
  type: run_command
  config:
    command: "ssh {{host}} 'uptime && free -h && df -h /'"
    parameters:
      host:
        type: string
        description: "服务器地址"

- name: check_recent_logs
  description: "查看最近的错误日志"
  type: run_command
  config:
    command: "ssh {{host}} 'journalctl -p err --since \"1 hour ago\" --no-pager | tail -50'"
    parameters:
      host:
        type: string
        description: "服务器地址"

- name: check_connections
  description: "检查网络连接数和状态"
  type: run_command
  config:
    command: "ssh {{host}} 'ss -s && ss -tnp | wc -l'"
    parameters:
      host:
        type: string
        description: "服务器地址"

第二步:配置告警触发的自动诊断任务

当 Prometheus 的 Alertmanager 触发告警时,通过 webhook 通知 OpenClaw 执行诊断任务。配置一个 webhook 接收器:

# alertmanager_webhook.yml
# Alertmanager 配置中添加 OpenClaw webhook
receivers:
  - name: openclaw-diagnose
    webhook_configs:
      - url: "http://localhost:3116/webhook/alert"
        send_resolved: true

然后在 OpenClaw 的任务配置中定义诊断流程:

# tasks/server_diagnose.yml
name: auto_diagnose_cpu
trigger: webhook
endpoint: /webhook/alert
prompt: |
  收到服务器告警,请自动排查问题。

  告警信息:{{alert_data}}

  请按以下步骤排查:
  1. 用 check_cpu_top 查看占 CPU 最高的进程
  2. 用 check_system_load 查看系统整体负载和内存
  3. 用 check_recent_logs 查看最近一小时的错误日志
  4. 用 check_connections 检查网络连接是否异常

  根据以上信息,生成诊断报告,包含:
  - 问题现象描述
  - 可能的根因分析
  - 建议的处理方案

  最后将报告通过 message 工具发送到运维钉钉群。
  webhook: {{dingtalk_webhook}}

第三步:实际诊断效果

当 CPU 告警触发后,OpenClaw 会在 30 秒内完成排查并发送类似以下的诊断报告:

[服务器诊断报告] app-server-03 (10.0.1.13)
时间: 2026-03-23 03:15:22

【问题现象】
CPU 使用率持续 98%,持续时间约 8 分钟

【排查结果】
1. CPU 占用最高进程: python3 data_sync.py (PID 28451, CPU 94.2%)
2. 系统负载: 4.82 / 3.21 / 1.05 (1/5/15分钟)
3. 内存使用: 6.2G / 8G (77%)
4. 错误日志发现: "MemoryError" 出现 3 次
5. TCP 连接数: 1247 (正常范围)

【根因分析】
data_sync.py 定时同步脚本可能进入了无限循环或处理了
异常大的数据集,导致 CPU 和内存同时飙高。
日志中的 MemoryError 印证了内存压力。

【建议处理】
1. 立即: kill -15 28451 终止异常进程
2. 短期: 检查 data_sync.py 的数据量限制逻辑
3. 长期: 为同步脚本添加超时机制和内存限制

严重程度: 中等 (单个脚本异常,不影响主服务)

定时巡检:防患于未然

除了被动响应告警,你还可以配置定时巡检任务,每天凌晨检查所有服务器的健康状况:

# cron_tasks.yml
- name: daily_server_health_check
  schedule: "0 6 * * *"  # 每天早上 6 点
  prompt: |
    请对以下服务器进行健康巡检:
    - 10.0.1.11 (app-server-01)
    - 10.0.1.12 (app-server-02)
    - 10.0.1.13 (app-server-03)
    - 10.0.2.11 (db-master)
    - 10.0.2.12 (db-slave)

    对每台服务器执行 check_system_load 和 check_recent_logs,
    如果发现异常(负载过高、磁盘空间不足、大量错误日志),
    标注为"需要关注"。

    将巡检结果汇总成报告发送到运维群。

ClawBrain 加持效果

服务器诊断场景对 AI 的要求很高:需要连续调用 4-5 个工具,理解命令输出结果,还要做出准确的判断。在没有 ClawBrain 的情况下,我们测试发现以下问题频繁出现:

接入 ClawBrain 后,这些问题得到了显著改善。ClawBrain 的智能路由会为命令执行和文本分析选择不同的模型:执行命令用轻量快速的模型,分析诊断用推理能力更强的模型。错误恢复机制确保单个命令失败不会中断整个流程,而是跳过并在报告中注明。

实测诊断准确率从接入前的 71% 提升到 93%,误报率从 15% 降到 3%。

总结

传统监控系统解决了"发现问题"的环节,OpenClaw 则补上了"诊断问题"这一关键步骤。将两者结合,你可以实现从监控到告警到诊断到通知的全链路自动化。

对于中小团队来说,这意味着不再需要半夜爬起来排查问题。OpenClaw 会先帮你做完初步诊断,如果问题严重再叫你起来处理,而不是每次都只告诉你"CPU 高了"然后让你自己想办法。

建议配合 ClawBrain 使用,可以显著提升诊断的准确率和流程的稳定性,让你的自动化运维体系真正做到值得信赖。

让你的 OpenClaw 更聪明

ClawBrain 通过智能路由和错误恢复,将 tool calling 成功率提升到 95%。一行配置接入,免费体验。

免费开始 →