运维自动化 ops 全天候守护

跨境电商站点 7×24 自动巡检

用 boltctl ops + Recipe 把多站点 SSL、DNS、容量、日志巡检串成一条无人值守流水线,把"凌晨告警"从被动 oncall 升级为主动 daily report。

作者: 发布:

跨境团队普遍头疼的一个问题:晚上欧美在跑、白天东南亚在跑,没人有完整的 24 小时窗口看着站点健康。出了证书过期、磁盘打满、回源 5xx,往往要等用户投诉才发现。

本案例把 boltctl 的 ops 插件做成一条 Recipe,每 30 分钟跑一轮,把巡检结果按严重级别分流到 Slack/邮件/飞书。

业务挑战

  • 5 个独立站点(Magento + Shopify + WordPress)跨 Cloudflare、AWS、GCP 三朵云。
  • 历史告警来自 Zabbix、UptimeRobot、各 PaaS 控制台 4-5 套,没人能给出统一健康视图
  • SSL 证书续期靠人脑记 —— 上次大促前一天才发现 api.shop.com 的证书 3 天后到期。
  • 半夜出 5xx 等到早班同学开机才处理,每次平均损失 3-5 小时高质量流量。

解决方案

把巡检拆成三层,每层用 boltctl 既有命令,AI Agent 编排:

层级工具触发
L0 探活ops cf zones list + ops cf pages status每 5 分钟
L1 健康ops cert checkops dns resolveops capacity report每 30 分钟
L2 处置ops cert renew(dry-run → confirm-token)、ops cache purge仅人工授权

L0/L1 全部走 --dry-run + JSON envelope,永不产生上游写;只有 L2 在 Agent 拿到 issued_token 后才真跑,并自动落 audit。

boltctl 命令演示

每 30 分钟跑一次的 Recipe:

boltctl recipe run site-health-pulse \
  --param site=acme-global \
  --param notify=slack:#ops-alerts

Recipe 内部展开:

# step 1: 全局事实摘要
boltctl ops --output json site facts --site acme-global

# step 2: SSL/DNS 巡检(所有 zone 并发)
boltctl ops --output json cert check --site acme-global --days-ahead 14
boltctl ops --output json dns resolve --site acme-global --record-types A,CNAME

# step 3: 回源健康 & 缓存命中率
boltctl ops --output json edge stats --site acme-global --window 30m

# step 4: 异常时把摘要丢给 notify adapter
boltctl ops notify send --channel slack:#ops-alerts --severity warn --payload @-

收益与指标

  • MTTD 从 ~4h 降到 < 8 min:5xx 异常在第二轮 L0 探活就出告警。
  • SSL 0 失约:14 天前提醒、3 天前自动尝试续期 dry-run,过期事故归零。
  • 告警噪声 -62%:JSON envelope 带 severity + next_action,Agent 端做二级聚合,重复告警自动折叠。
  • 人力:值班轮转从 3 人 oncall 砍到 1 人 review daily report。

复用建议

  • 想把 Recipe 跨多站复用,不要把 site 名硬编码进 step —— 用 --param site= 暴露出来,agent 端在多账号并行调度时只换 param。
  • L2 写命令要 --reason "scheduled_cert_renew",便于在 state/ops/audit.ndjson 区分自动续签和手动操作。
  • Notify adapter 建议同时开 email:slack: 两个 channel —— Slack 抖动时邮件兜底,避免单通道静默失败。