ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

影刀RPA进阶教程:告警升级机制——从机器人通知到人工介入的链路

影刀RPA进阶教程:告警升级机制——从机器人通知到人工介入的链路

影刀RPA进阶教程:告警升级机制——从机器人通知到人工介入的链路

流程半夜挂了,你早上九点才知道,业务数据断了一整天——这种事经历过一次,你就会认真对待告警。但更常见的翻车是另一个极端:机器人每跑一次就往群里丢五条通知,一周后所有人把群设成了免打扰,真出事那天没人看见。我管着二十多个影刀RPA流程,被这两种极端都坑过,最后搭了一套告警升级机制:小事自动处理,中事发群通知,大事直接把人拉进来,一级一级往上升级。

这篇把这条链路完整拆开讲,从重试策略到人工介入的闭环,全是实操两年攒下来的经验。

告警的本质:分级,而不是有通知就行

先说结论:一套告警机制没有分级,等于没有告警。

我最早的告警就是所有异常都发钉钉群,跑了一周群里一天几十条消息,队友直接屏蔽了群。后来有个关键的对账流程在周五晚上失败,因为没人看群,周一才发现,损失不小。那次之后我明白,告警的价值不在于"发出去",而在于"该看到的人必须看到,且不能看麻"。

我的分级方案是四级,也是现在稳定运行的版本:

级别判断标准响应动作谁来处理
L1瞬时异常网络抖动、元素偶尔找不到机器人自动重试,不通知机器人自己
L2可自动恢复重试后成功记日志,事后汇总通知机器人自己
L3流程级失败重试用尽仍失败群机器人发通知+告警邮箱当班的人
L4持续失败同一流程连续两次失败升级:@人+短信级触达+人工介入流程负责人

升级机制的灵魂在L3到L4:第一次失败通知群,第二次失败说明通知没被处理,就要换更重的通道。这个判断需要一个"失败登记表",后面细讲。

第一道防线:重试不是简单的再来一次

L1和L2全靠重试策略,这里最容易写糊。影刀RPA里Try-Catch异常处理的结构是Try-Catch-Finally,重试要靠While条件循环或者For次数循环包在Try外面自己实现。

我踩过的坑是"无脑重试三次":页面结构真的变了,重试三次每次都在同一个地方死,白白多跑十分钟。正确的做法是分错误类型:

  1. 网络类、超时类报错:等30秒重试,最多三次,间隔递增。
  2. 元素定位失败:先判断元素是否存在,配合等待元素出现的指令再试一次,还失败就别重试了,直接进L3。
  3. 数据类报错(比如表格里的脏数据):跳过这条记录记进异常清单,绝不为单条数据重跑全流程。

每次重试都要在"输出日志"里记下第几次重试、报错指令名、报错信息。日志是后面所有升级判断的依据,Catch块里没有日志的告警机制,出了问题连复盘都做不了。

第二道防线:群机器人Webhook的正确用法

进入L3,就该群机器人上场了。影刀RPA的指令面板里有对接钉钉群机器人、企业微信群机器人、飞书群机器人的指令,原理都一样:在群里添加自定义机器人,拿到Webhook地址,流程里调用发送指令把消息推到群。

三个平台我都接过,配置上各有各的坑:

  • 钉钉机器人:安全设置里如果选了关键词模式,消息内容必须包含那个关键词,否则发送直接被拒。另外文档里写得很清楚,钉钉机器人只支持发送富文本消息,不支持发文件,想发附件就得走别的通道。

  • 企业微信机器人:Webhook有频控,短时间内连发大量消息会被限流,告警消息要做合并。

  • 飞书机器人:同样拿到Webhook地址和密钥就能用,消息格式用markdown卡片,把流程名、报错指令、时间、重试次数排清楚。

消息内容我固定五个字段:流程名、失败阶段、报错摘要、已重试次数、处理指引(比如"请检查工单系统登录态")。告警消息是写给三年后的自己看的,宁可啰嗦也别让人猜。

# 捕获元素:把报错信息从异常对象里整理成告警消息(伪代码)# 输入:app_name、stage、error_msg、retry_countalert_msg=("【L3告警】流程失败\n"f"流程:{app_name}\n"# 流程名,对应控制台应用f"阶段:{stage}\n"# 失败发生在哪个子流程f"报错:{error_msg[:80]}\n"# 报错截断,群里太长没人看f"重试:{retry_count}次后仍失败\n""处理:请检查页面结构或登录态,处理后回复已介入")

升级的关键:失败登记表与二次失败判定

L3升级到L4的判断,靠一张失败登记表。实现很简单:飞书多维表格或本地Excel,每次L3告警时写入一行(流程名、时间、是否已处理)。

下一次运行失败时,流程先查这张表:上一条同流程的失败记录还没被标记"已处理",说明上次通知没人响应,直接走L4升级,同时在通知里@具体的人。

这里有个时序坑我踩过:登记表的读取要在流程开头做,写入要在告警发出后立刻做,中间隔了别的指令的话,并发跑的流程会读到脏数据。多个流程共用一张登记表时,尽量错峰调度,或者在表里加"流程名"字段严格隔离,这是文档里反复强调的多任务并发要注意的地方。

人工"已介入"的标记怎么回来?两条路:最土的办法是人在多维表格里手动把状态列改成已处理;优雅一点的做法是走对话式介入,下面细说。

人工介入闭环:从通知到对话再到重启

L4的"人工介入"不是发个消息就完了,要形成闭环:人能知道详情、能反馈处理结果、能触发补救动作。

第一层是双向消息。影刀RPA有钉钉机器人监听内部群消息的能力(新版指令),可以监听群里@机器人的回复。我把它用在告警确认上:负责人在群里回复"已介入+流程名",监听流程捕获消息后,把登记表对应记录标记为已处理。这就把"谁看到、谁接手"落到了数据上。

第二层是Webhook触发器做远程重启。影刀的自动化能力里支持配置Webhook触发器:接收HTTP请求后启动流程。我把关键流程复制一个"恢复专用版"(清缓存、重新登录、从断点续跑),配置Webhook触发,负责人在手机上用快捷指令或浏览器访问一次那个地址,恢复流程就在服务器上跑起来了。半夜流程挂掉,人不用摸到电脑。

第三层兜底是告警邮箱。控制台本身支持设置告警邮箱和钉钉群,计划任务执行异常时可以收到告警通知,这是平台自带的最后一道保险,跟自己的升级机制并行用,成本为零。

定时任务调度:让告警链路自己也有心跳

升级机制里所有检查动作——失败登记表轮询、未处理告警的升级判定——都要靠定时任务驱动。控制台里配置计划任务,我设了三个节奏:业务流程按业务节奏跑(比如每天早上七点),告警升级判定每小时跑一次,登记表周度清理跑一次。

夜间执行有单独的坑:凌晨时段个别内网系统会维护,把敏感流程排在维护窗口之外,能少一半L3告警。错峰调度还有个好处,多个流程不抢同一台机器,调度器上有机器人状态的概念,空闲、运行中、离线都会显示,把任务分配给状态健康的机器人。

系统联动这块,邮件发送我也接了一条:每周五自动汇总本周全部L3/L4告警,发周报邮件给团队。告警不怕多,怕的是没有沉淀,周报就是沉淀。

告警链路搭建顺序与易错速查

建议的搭建顺序是:先把输出日志写规范,再接一个平台的群机器人,然后加重试分级,最后上失败登记表和升级判定。一次全上容易顾此失彼。

现象原因解决办法
钉钉消息发送失败安全设置关键词不匹配消息里固定带上关键词
群消息被人屏蔽告警太密没有分级上L1-L4分级,L1不通知
升级判定误报登记表记录没及时标记监听"已介入"回复自动关单
重试把问题放大对元素类报错无脑重试按错误类型分策略重试
夜间集中报错系统维护窗口撞上任务错峰排程避开维护时段

延伸阅读与模板

官方文档里群机器人对接、定时任务配置这几篇值得反复看,客户端帮助入口能直接搜到。我把这套四级升级机制的失败登记表模板、监听关单的写法、Webhook触发的恢复流程设计,整理在作者的代码仓库里了,地址 home.linyan.cloud ,照着模板改流程名就能用。最后提醒一句:告警机制上线后第一周,密切观察消息密度,宁可误报多发几条,也绝不能漏报——漏报一次的代价,可能就是一次没有预警

的数据事故。


#影刀RPA #RPA自动化 #异常处理 #定时任务 #钉钉

作者:林焱

返回列表