把运维手册建成图,检查告警处理死路
文章将运维手册建模为包含告警入口、处理步骤和操作规则的有向图,并用 YAML 描述负责人、后续路径及终止状态。通过结构检查,可发现不可达步骤和无法通向处理终点的告警路径。
原文暂未完整获取,基于公开信息的快读
dev.to 上一篇文章提出,把运维手册里的告警入口、处理步骤和操作规则建成有向图,再用脚本检查断链与死路。重点是让机器检查流程结构:告警触发后,人能否找到入口、每一步由谁负责、处理路径能否走到明确终点。
目前能确认什么
作者用一个 YAML 文件保存三类信息:Alerts 记录告警及入口,Steps 记录负责人、命令、允许的后续步骤和终止标记,Rules 描述变更冻结及相关操作约束。有向图中的节点对应步骤,边对应允许的流转方向。
节选里的 escalate_platform 没有后续步骤,也没有标记为终点,因此会卡住处理流程。它还要求处于冻结状态,却没有声明解除冻结的触发条件。
作者给出的 Python 脚手架使用广度优先搜索(BFS),检查入口缺失、终点不可达、路径过长、缺少负责人等问题,并通过非零退出码让 CI 拦截。不过,作者明确表示,没有运行过这份确切代码。
AI 在这里承担的是把现有文字整理成结构的草拟工作,作者要求它不要生成新命令。
我的判断
对维护线上服务的程序员,这个思路适合检查回滚、升级和人工接手之间是否断链。把流程随服务代码一起管理,也能让处理路径的修改进入代码审查。
存在一条通向终点的路径,不等于所有分支都能收尾。
节选脚本检查的是最近终点距离;即使某条分支陷入循环,只要另一条路能到终点,仍可能通过这项检查。此外,next 指向不存在的步骤时,代码还可能因访问缺失节点报错。
因此,目前可以把它视为结构审计的起点。冻结规则如何参与路径判断、怎样检查循环分支,节选没有完整交代;标记了 terminal: true,也不能证明故障已经恢复,恢复条件仍需另外定义和验证。