OpenClaw 服务器监控实战:CPU 异常自动排查、日志分析、告警通知
引言
凌晨三点,手机突然响了,是服务器告警: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 的情况下,我们测试发现以下问题频繁出现:
- 模型在解析
ps aux输出时丢失关键列,导致进程信息不准确 - SSH 命令超时后整个诊断流程中断,没有错误恢复机制
- 生成的诊断报告质量不稳定,有时候把正常状态误判为异常
接入 ClawBrain 后,这些问题得到了显著改善。ClawBrain 的智能路由会为命令执行和文本分析选择不同的模型:执行命令用轻量快速的模型,分析诊断用推理能力更强的模型。错误恢复机制确保单个命令失败不会中断整个流程,而是跳过并在报告中注明。
实测诊断准确率从接入前的 71% 提升到 93%,误报率从 15% 降到 3%。
总结
传统监控系统解决了"发现问题"的环节,OpenClaw 则补上了"诊断问题"这一关键步骤。将两者结合,你可以实现从监控到告警到诊断到通知的全链路自动化。
对于中小团队来说,这意味着不再需要半夜爬起来排查问题。OpenClaw 会先帮你做完初步诊断,如果问题严重再叫你起来处理,而不是每次都只告诉你"CPU 高了"然后让你自己想办法。
建议配合 ClawBrain 使用,可以显著提升诊断的准确率和流程的稳定性,让你的自动化运维体系真正做到值得信赖。