2026-10-05 · 原文发布日
生产事故自动定级:SEV1到SEV4分渠道通知
运维团队可借鉴的n8n模板:事故报告POST到webhook后,缺少服务名或影响描述的直接退回不评分;合格的交给Jev分类服务(置信度阈值0.65)给出严重度等级和分数,低置信度的先转人工在Telegram确认,其余按分数路由:SEV1建作战室并电话呼叫事故指挥官、SEV2呼叫值班工程师、SEV3建服务台工单、SEV4进 backlog。每条都先落Google Sheets再通知,SEV1还会用AI起草90词的干系人通报;每月初自动生成事故趋势简报发给工程负责人。
原文要点
原模板:事故报告POST到webhook(路径jev-c2-incident-intake),缺少service或impact_text的报告不评分,标记not_scored_report_unusable并邮件退回;合格报告送Jev分类服务(jev-latest,置信度阈值0.65,3次重试、60秒超时)返回等级、分数、置信度和needsReview。路由先查needsReview,再按分数2.5/1.5/0.5分SEV1至SEV4五条道:SEV1建作战室Telegram呼叫指挥官并用作者写的gpt-6-luna起草90词干系人通报,SEV2呼叫值班工程师,SEV3邮件建服务台工单,SEV4进backlog,低置信度转Telegram请指挥官人工定级。每条先写Google Sheets的“Incident Severity”表再通知;每月1日08:00(cron 0 8 1 * *)汇总趋势简报发给工程负责人。
这次做成什么
在测试n8n里复刻这条定级路由:webhook收单→字段校验→(模拟或真实)评分→五分支路由→先落表后通知→月度汇总,每条分支用测试数据各打穿一次。
准备什么
- 可接收外部POST的n8n实例,webhook能被你的测试机访问
- 测试用Google Sheets(建Incident Severity标签页)与Gmail OAuth2凭据
- Telegram测试机器人token和一个测试群chat id
- Jev分类服务凭据,没有就用本站模拟评分数据走Code节点
- 发告警的测试工具,curl或Postman均可
具体怎么做
建webhook并做字段校验
加Webhook节点,方法POST,路径jev-c2-incident-intake。后接Set节点把body里的incident_id、service、impact_text、affected_users、customer_facing、detected_at规范化并补received_at。再加IF节点:service或impact_text为空走“不可用”分支,用Set节点写status=not_scored_report_unusable和缺失字段名,接Gmail退回;非空才进入评分。用材料一第一条不完整数据先验证退回分支。
评分节点:真实Jev或本站模拟
有Jev凭据就按其节点配置operation=score、阈值0.65、重试3次、超时60秒,输出level、score、confidence、needsReview。没有凭据时加Code节点,按规则模拟:impact_text含“全站/宕机/数据丢失”给score=2.8,含“部分用户”给1.8,含“轻微”给0.3,confidence随机在0.5-0.95之间,便于打穿各分支。
按置信度与分数路由五条道
加Switch节点:第一条件needsReview为true进人工确认道;否则score>=2.5进SEV1、>=1.5进SEV2、>=0.5进SEV3、其余SEV4。每条道先接一个Set写优先级与SLA(SEV1=P0/5分钟、SEV2=P1/15分钟、SEV3=P2/1440分钟、SEV4=P4/10080分钟),再接Google Sheets append,最后才接通知节点,保证通知失败记录仍在。
配置各分支通知
SEV1:Telegram发作战室消息呼叫指挥官,再用AI节点起草约90词四行干系人通报(提示词见材料三)后Gmail发出;SEV2:Telegram呼叫值班工程师;SEV3:Gmail给服务台测试邮箱;SEV4:只落表不呼叫;人工确认道:Telegram发出置信度与建议等级,等指挥官定级。所有收件地址和chat id换成你的测试值。
月度趋势简报
加Schedule Trigger,cron填0 8 1 * *并确认时区;接Google Sheets读Incident Severity全表,Code节点按severity_level计数incident_id,再用AI节点把计数写成趋势简报,Gmail发给工程负责人测试邮箱。手动执行一次验证输出。
可直接复制的材料
webhook测试数据(两条)
本站虚构测试数据;第一条应进SEV1道,第二条应被退回且不评分。
{"完整可评分":"{\"incident_id\":\"INC-TEST-001\",\"service\":\"checkout-api\",\"impact_text\":\"全站下单接口宕机,所有用户无法支付,疑似数据丢失\",\"affected_users\":5000,\"customer_facing\":true,\"detected_at\":\"2026-10-05T09:30:00Z\"}","缺字段退回":"{\"incident_id\":\"INC-TEST-002\",\"service\":\"\",\"impact_text\":\"\",\"affected_users\":0,\"customer_facing\":false,\"detected_at\":\"2026-10-05T09:35:00Z\"}"}Incident Severity标签页列结构
这13列是原文逐字给出的,建表时照抄,六个Sheets节点都指向同一文件这一标签页。
incident_id, received_at, service, severity_level, severity_score, confidence, needs_review, paging_owner, sla_hours, action_taken, impact_excerpt, status, routed_atSEV1干系人通报起草提示词(本站编写)
本站独立编写;原模板用作者所称gpt-6-luna模型起草90词通报,该模型可用性需在你的凭据中核对,也可用你已有的任意聊天模型代替;{{ }}按节点表达式替换。
你是事故通报撰写助手。根据以下事故信息写一段干系人通报,严格约90个词、四行:
第一行:事故编号与影响的服务;
第二行:当前影响范围和用户可见现象;
第三行:已采取的动作(已建作战室、指挥官已介入);
第四行:下一次更新时间与获取进展的渠道。
语气冷静、面向管理层,不含推测性根因,不承诺恢复时间。
事故信息:编号{{incident_id}},服务{{service}},影响{{impact_text}},受影响用户{{affected_users}}。输入与输出示例
本站虚构演示,分数来自模拟规则而非真实Jev服务,未在原模板运行。
输入
POST第一条测试数据:checkout-api全站宕机、5000用户无法支付、customer_facing=true;模拟评分返回score=2.8、confidence=0.91、needsReview=false。对应输出
路由命中score>=2.5进SEV1道:Set写入priority=P0、sla=5分钟、action_taken=sev1_war_room;Sheets追加一行,severity_level=SEV1、status=sev1_war_room;Telegram测试群收到作战室呼叫消息;AI起草四行约90词通报后Gmail发到干系人测试邮箱;第二条缺字段数据则写入status=not_scored_report_unusable并退回,无任何评分。做完检查这些
- 缺service或impact_text的POST收到退回邮件,且Sheets中没有severity_score记录
- 评分2.8/1.8/0.3三条测试数据分别落到SEV1、SEV2、SEV4道且每道先写表后通知
- 把模拟confidence压到0.5以下时进入人工确认道,Telegram收到置信度与建议等级
- 手动触发月度Schedule后,能收到一封按等级计数的事故趋势简报邮件
容易卡住的地方
- webhook激活后URL才对外可用,练习用测试URL与生产URL不同,别混
- 阈值0.65和分数带2.5/1.5/0.5是作者设定,上线前按自己业务校准
- 四个Telegram节点和四个Gmail节点的chat id与收件人都要逐个改,漏改会发到原作者占位地址
- SEV4不呼叫任何人,容易被误以为流程卡住,检查Sheets确认落表即可
- cron 0 8 1 * *按n8n实例时区执行,跨时区团队先确认再激活
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Score and route incidents with Jev Classification, Google Sheets, Gmail, Telegram, and GPT-6-Luna
- 原作者
- Khairul Muhtadin
- 原始发布日期
- 2026-10-05T11:12:09.495Z
- 来源
- https://n8n.io/workflows/20451