Loop Engineering 落地手册:从零搭建第一个工程闭环
搞工程闭环(Loop Engineering)的人很多,但真把闭环转起来的少。大部分团队的”闭环”就是加个监控面板,配个告警,完事。这不叫闭环,这叫”有监控”。
闭环的核心是反馈驱动自动决策——系统不仅告诉你出了问题,还能自己决定怎么处理,处理完了还能验证结果。本文从最小闭环开始,手把手搭一个。
什么是工程闭环
简单讲,工程闭环就是四个字:感知→决策→执行→验证。
1 | [指标采集] → [规则/判断] → [自动动作] → [效果确认] |
没有最后那步”验证”,就不知道动作有没有用,下一次决策就没依据。这就是开环和闭环的区别。
最小闭环:一个 HTTP 错误率的自动降级
目标:当 API 错误率超过阈值,自动切掉坏节点,切完确认错误率回落。
第一步:感知——采集指标
用 Prometheus + node exporter 是最常见的组合。但最小闭环不需要这么重,一个定时脚本就行:
1 | # health_check.py |
每 10 秒跑一次(crontab 或 systemd timer),指标写本地文件。够了。
第二步:决策——判断要不要动作
1 | # decision.py |
关键点:不是一次失败就动作。用滑动窗口看趋势,避免毛刺触发误操作。恢复也有门槛——错误率降到阈值一半才放回来,防止反复横跳。
第三步:执行——自动降级
1 | # action.py |
执行动作要记日志。没有日志的自动动作是定时炸弹。
第四步:验证——确认动作生效
这是最容易被忽略的一步。降级完了,得确认错误率真的降下来了:
1 | # verify.py |
验证失败就报警,不自动往上加操作。自动化的边界在这里——能自己处理的自己处理,处理不了的及时喊人。
跑起来
把四步串成主循环:
1 | # main_loop.py |
这就是一个完整的闭环。200 行代码,能跑。
CI 门禁:另一个最小闭环
除了运行时闭环,CI 里也能搭闭环。思路一样:感知→决策→执行→验证。
1 | # .github/workflows/quality-gate.yml |
CI 门禁是最容易落地的闭环形式,因为”验证”天然就有——合并后 CI 绿了就是验证通过。
Error Budget:闭环的节奏控制器
没有预算的自动化要么太激进(一点风吹草动就降级),要么太保守(系统都快挂了还不动作)。Error Budget 就是给闭环加个预算:
1 | Error Budget = 1 - SLO |
1 | # error_budget.py |
Error Budget 让闭环有了”经济性”——不是所有错误都值得自动处理,只有预算在快速消耗时才动作。
几个落地避坑点
1. 别一上来搞大闭环
先搞定一个最小闭环(比如上面的错误率降级),跑稳了再加第二个。多闭环的协调比单闭环复杂一个量级。
2. 自动动作必须有回滚路径
每次自动降级/熔断/限流,都要有对应的恢复操作,而且恢复操作要自动化。只管杀不管埋的自动化比手动操作还危险。
3. 阈值不是写死的
代码里的 ERROR_THRESHOLD = 0.5 是示例,实际部署要从历史数据算。一个简单方法:取过去 7 天 P99 错误率的 2 倍作为阈值。
4. 日志是闭环的生命线
每个环节都要有结构化日志。出了问题回头看,没有日志就是黑箱。推荐用 JSON 格式写日志,方便后续用 jq 或 ELK 查。
5. 闭环要有开关
生产环境必须能一键关闭自动动作,降级为”只告警不动作”模式。新上的闭环先跑观察模式一周,确认无误再开自动。
下一步
这篇文章搭了一个最小闭环。但实际工程中闭环转不起来的原因,往往不是技术问题——是组织问题、指标问题、信任问题。下一篇聊 Loop Engineering 的反模式,说说为什么你的闭环转不起来。
相关阅读:
- Google SRE Book Chapter 3 - Embracing Risk
-《SRE:Google运维解密》中文版第3章 - Netflix Hystrix 设计思想(熔断器模式)