乐于分享
好东西不私藏

OpenClaw 教程 E07 · 运维闭环:装完不管就出事

OpenClaw 教程 E07 · 运维闭环:装完不管就出事

 

OPENCLAW 教程系列 · E07

 装完不管就出事:运维闭环四件套

 AISTOC产品团队 · 2026 年 7 月
 

   本期你能带走什么:给 E06 部署好的服务补齐运维四件套——定时探活、日志切割、数据备份、失败告警。附赠一条独家 Aha:让 Agent 自己当告警器,用 OpenClaw 内置 cron 每 15 分钟自动巡检并汇报。
 

一、你部署完,就以为搞定了?

E06 结尾的画面很美——浏览器打开,域名 + HTTPS,一切绿灯。但真正的运维故事,从这一刻才开始。第二天凌晨证书过期、第三周磁盘被日志撑爆、第五个月 tasks.json 因为一次意外的断电或网络抖动损坏、第一次线上事故你才发现没人告诉你出了事——这些是每一位独立开发者都会踩的坑。

一个在跨境电商做过运维的朋友讲过一段惨案:公司部署了一个内部报表服务,跑了三个月一直很顺,然后某个周五下午证书过期。因为没配告警,团队根本不知道;下游依赖的两个内部工具全线挂掉,第二天客服接到 20 多个投诉才反应过来。事后复盘,他把“运维四件套”贴在了整个团队 wiki 的第一页:探活告警、日志切割、数据备份、状态通知——这四件事任何一件缺失,都足以让一次 15 分钟能修的故障拖成 4 小时。真实工程里,运维闭环不是花架子,是“少熬夜的必需品”。

运维闭环的四件套,说到底就是问答四个“谁”,一个都不能少:

  • 谁盯着服务?—— 定时探活
  • 谁管着日志?—— 切割 + 保留期
  • 谁保管数据?—— 定时备份 + sha256 校验
  • 谁通知你?—— 状态变化告警(不刷屏)

每一条都不复杂,但少一条,你就会在最不合适的时刻被现实教育。业内有一句流传甚广的话:“监控这件事,事后花的钱是事前的十倍”——独立开发者尤其如此,因为你不像大公司有 SRE 团队兜底,出了事只能自己爬起来救火。E07 的目标不是让你的服务永远不宕机,而是让你在宕机后 15 分钟内知道,30 分钟内恢复,第二天早上还能喝上一杯完整的咖啡

二、OS cron 与 OpenClaw cron,什么时候用哪个

场景 选谁
单纯 shell 命令定时(备份 / 日志切割 / 重启) OS cron / Task Scheduler
需要 Agent 判断 / 发消息 / 调多个工具 OpenClaw cron
系统底层动作(fs / 网络) OS cron(更接近内核,权限清晰)
失败要 push 到飞书 / Slack OpenClaw cron(delivery.announce 一步到位)

OpenClaw 官方对自家 cron 的定位很清晰:“Cron runs inside the Gateway process (not inside the model). Job definitions, runtime state, and run history persist in OpenClaw’s shared SQLite state database so restarts do not lose schedules.”——它跑在 Gateway 进程里、状态持久化到 SQLite、重启不丢。

还有一条容易踩的坑:OpenClaw cron 里 payload.kind=agentTurn 只能配合 isolated / current / session:<id>,绝不能配 main;反过来,main 只能配 systemEvent。文档里那段 CRITICAL CONSTRAINTS 值得读三遍——第一次误配基本会被拒。

三、定时探活:状态变化才告警,别刷屏

新手最容易写出的告警脚本,是“每 15 分钟 curl 一次,任何异常就发消息”。运行一天你会发现——真挂了那次没人看,因为群里已经被 96 条”ok”淹没。告警的价值在于稀缺

正确做法是维护一个状态文件,只在 ok → downdown → ok 时告警。四条设计原则:

  • 保存上一次状态到一个小文件
  • curl --max-time 5——慢也算 down
  • Webhook 未配置时只写日志不失败——本地/测试环境友好
  • 恢复也要发一条,让人知道“事结了”

Linux 版本一段 shell 就能搞定,Windows 上用 PowerShell 加一个 Task Scheduler 任务;两者结构一样。这套机制的关键不是代码量,是克制——告警刷屏是失去团队信任最快的方式。业内做 SRE 的老同事有一条职业信条:“告警要么让人跳起来,要么别响”——响得多,人就慢慢把它当成白噪音,等到真需要跳起来的那一刻,谁都没听见。运维文里最有价值的 30% 内容,几乎都在反复讲“如何让告警更少但更准”。

四、数据备份的三条铁律

备份是那种“平时觉得多余、真出事才知道值多少钱”的动作。三条铁律,一条都不能少:

  1. 压缩:JSON/日志压缩比通常 5–10 倍,省一半以上的对象存储费
  2. sha256 校验:没有 checksum 的备份 = 没备份。恢复那天你才发现文件损坏,那种绝望无法形容
  3. 保留期:find -mtime +14 -delete,别让备份把磁盘吃满

AISTOC 内部 Windows Server 2022 实测(Backup-OcTodoWeb.ps1 语法校验通过并本机跑通):

✅ Backup PS 语法通过
backup: tasks-20260710T224726Z.json (59 bytes)
retention: kept last 7 days

=== sha256 ===
AA6B7521FDEA1E202294E48E7E066BC948AF235E7DB2323429BD79C810F344AB

若你希望走 OpenClaw 官方备份工具,openclaw backup create 会把 ~/.openclaw 里的 state / config / credentials / workspace 一并打成 .tar.gz,跳过 session transcript 与 rolling log 等易失文件,跑 --only-config 可以只备份配置。

关于备份放哪里,个人开发者最省心的姿势是“本机备份 + 云对象存储双份”。本机每天 03:15 一份,跑完立刻用 aws s3 cprclone copy 推到 S3 / Cloudflare R2 / 阿里云 OSS 之类的对象存储。云端保留 14 天,本机保留 7 天,两边同一时段都坏的概率极小,几乎可以忽略。真出事时,恢复的第一步永远是用 sha256 先校验备份文件本身——恢复一份坏文件,等于给自己二次伤害。

五、日志切割:一行 logrotate 顶一夜通宵

Linux 上,把下面这份配置塞到 /etc/logrotate.d/oc-todo-web:

daily
rotate 14
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
  systemctl kill -s HUP oc-todo-web.service > /dev/null 2>&1 || true
endscript

每天切一次、保留 14 天、压缩、切完发 SIGHUP 通知服务重开文件——一段配置解决所有事。Windows 上 NSSM 内置日志轮转,E06 里已经设成 AppRotateBytes=10485760(10 MB),只需再挂一个每周清老的定时任务——一段 Get-ChildItemWhere-Object 就能删掉两周前的老日志,逻辑简单,一次配好长期无感。

Gateway 自己的日志也别忘。OpenClaw 默认写到 /tmp/openclaw/openclaw-YYYY-MM-DD.log,JSONL 格式,logging.maxFileBytes 默认 100 MB,保留 5 份归档。远端拉日志用 openclaw logs --follow,走 Gateway RPC,断线自动重试。

OpenClaw 日志还有个好习惯:Gateway 日志内建脱敏。logging.redactSensitive 会自动清掉 API 密钥、支付卡号、CVV 等敏感字段;logging.redactPatterns 允许你追加自己的正则。即使把这一项关掉,UI/support bundle/审批提示三条通道也会强制脱敏——这是官方的兜底防线。

六、让 Agent 自己当告警器(本期独家)

运维文里”cron + shell + webhook”是老配方,OpenClaw 让这条链路多了一个新选项:让 Agent 自己按时干活。一段 cron 工具调用,就能建一个每 15 分钟被唤起的巡检任务:

cron(action=”add”, job={
  name: “healthcheck oc-todo-web”,
  enabled: false,
  schedule: { kind: “cron”, expr: “*/15 * * * *”, tz: “Asia/Shanghai” },
  sessionTarget: “isolated”,
  payload: {
    kind: “agentTurn”,
    message: “探活 oc-todo-web:curl -fsS /healthz;不 ok 就告警。”
  },
  delivery: { mode: “announce”, channel: “feishu”, to: “…” }
})

Agent 每次被唤起,会自己 exec 一段 curl,读返回、判断状态、然后决定要不要发消息。你不再需要写 shell 逻辑,判断规则用自然语言表达——“连续 3 次挂了才升级为高危”、“深夜时段只写日志不发消息”,都是一句话的事。代价是每次执行都消耗 Agent token,别当秒级探针用;15 分钟一次是甜蜜点。据 AISTOC 内部实测(cron 三段生命周期 add → list → remove 已跑通),单次 agentTurn 探活的开销大约在几百到一千 token 之间,取决于模型和思考深度——每天算下来不过一顿早餐钱,却能省下你凌晨爬起来看服务的力气。

 教学告警的 delivery.to 铁律:不要把 demo 告警发到生产群。优先级依次是——写日志文件、发到 Agent 自己的 direct、专门的测试群,正式上生产前才切换到运维群。告警刷屏是失去信任最快的方式,AISTOC 团队反复自我提醒。

七、AI Agent 的可观测性:四类必看指标

往深一层走:Agent 系统的可观测性和传统 Web 服务不太一样,除了 latency 与 error rate,还多了 token cost、工具选择分布。OpenClaw 内置 diagnostics-oteldiagnostics-prometheus 两个插件,直出 OTLP/HTTP 或 Prometheus text。接 Grafana Cloud Free Tier / Signoz Cloud / Langfuse,都是几行配置的事。

类别 典型指标 告警建议
Cost openclaw_model_tokens_total 单日超预算 80% 触发
Latency openclaw_model_call_duration_seconds p95 > 30s 持续 5 分钟
Error *_total{outcome="error"} 5 分钟错误率 > 5%
Behavior openclaw_skill_used_total 工具突增/骤降告警

还有一条默认行为:OpenClaw 的 OTEL 导出默认不包含模型输入/输出/工具参数。任何 captureContent.* 开关一旦打开,等价于把对话原文发到可观测后端——这可能踩到 GDPR / PIPL / 客户 NDA 的红线。默认关,是合规默认值。

AI Agent 的可观测性行业里,2025 年有 LangSmith、Langfuse、Helicone、Arize Phoenix、Datadog LLM Observability、Sentry AI Monitoring、Grafana LGTM + OTEL GenAI 一整个货架。OpenClaw 没自己造后端,而是坚定走 OpenTelemetry GenAI 语义——一个“跟谁都能对接”的选择。选型上给读者的建议是:倾向 OTEL GenAI 语义,才能保住换后端的可能性。今天用 Grafana Cloud 免费额度,明天可以无缝换到自建 LGTM,或者接 Signoz Cloud、Langfuse 自托管。

尾注 · Prometheus 端点不能裸露到公网/api/diagnostics/prometheus 官方一再警告:从内网、tailnet 或反向代理鉴权后拿指标,是唯一合规姿势。把可观测的入口做严,是运维闭环的最后一道底线。

八、闭环图:一张图记住四件套

把这一集的四件套连起来看,其实是这么一张图——中心是 oc-todo-web,systemd/NSSM 托着它跑;上面一层是 15 分钟一次的探活 cron,探到状态变化就走 Webhook 通知;旁边是 logrotate/NSSM 自动切割日志,避免磁盘炸;下面是每天 03:15 的备份脚本,压缩、sha256、保留 14 天。这四条链路合起来,就是“装完不管也能自愈”的最小拓扑。

有一件事值得在收尾时再强调:运维闭环不是一次做完的动作,而是一份长期契约。它每天默默地为你多做一点事——多备份一份、多轮转一次、多探活四次、少发几条无用告警——积起来就是你晚上能睡好觉的资本。技术教程写到这一集,语气该慢下来了:让服务替你悄悄安静地运转,就是给未来的那个自己按月发工资

九、你现在可以做的三件事

运维闭环最难的其实不是配置本身,是“配了但没验证过”——你以为备份跑了,恢复那天才发现备份也是坏的。下面三件事各占十几分钟,做完你就能对“运维闭环”这四个字有身体记忆。

 ☐ 第一件:给你的服务配一次探活 + 状态变化告警。不管是 OS cron 一段 shell 还是 OpenClaw cron 一段 agentTurn,跑上一天,看告警群里有没有“每 15 分钟一次的 ok 刷屏”——如果有,就是没做状态判断;把它改成”only ok→down”再跑一天。
 ☐ 第二件:主动删一次数据文件,验证备份能不能恢复。先把备份复制一份到别处,然后 rm tasks.json,再从备份恢复,跑 sha256 验一遍。**没跑过恢复的备份,不算备份。**
 ☐ 第三件:接一次可观测后端(推荐 Grafana Cloud Free Tier)。装上 diagnostics-oteldiagnostics-prometheus,把 Cost/Latency/Error/Behavior 四类指标建 4 个面板。哪怕你什么都不看,画面上有那条 token 曲线,你对自己的服务就有了直觉。

十、下期预告

运维闭环补齐,你的小服务已经具备“装完不管也能自愈”的能力。E08 是全系列的收官——进阶三件套:MCP 协议接入、自定义 Tool 开发、Skill Workshop 治理化落地。也会展示一个具体的产品克制:Skill Workshop 只做“只读展示”,写入前后 openclaw.json 未变。E08 还会把这 8 期的完整心智串起来,让你带着一份能落地的路线图收官,而不是散落一地的孤立技巧——写代码、教技能、派协作、发上线、盯运维、接扩展,一整套心法从这里画上句号。下期见。

—— AISTOC产品团队

 

📚 OpenClaw 教程系列 · 8 期完整目录

 

   E01 · 5 分钟跑通 OpenClaw
   E02 · 让 Agent 帮你写代码
   E03 · Skills 与 Tools 详解
   E04 · 多 Agent 协作
   E05 · 应用开发实战:从需求到 MVP
   上一篇:E06 · 部署到服务器(Windows / Linux 双轨)
   ◎ E07 · 运维闭环(当前)
   下一篇:E08 · 进阶:MCP、扩展与团队治理
 
 AISTOC产品团队 出品 · 数据来源:OpenClaw 官方文档(cron / logging / backup / diagnostics / OpenTelemetry / Prometheus 章节)、OpenTelemetry GenAI Semantic Conventions(experimental)、AISTOC 内部 Windows Server 2022 Backup 脚本实机跑通 + cron 三段生命周期实测