跳到主要内容

事件 Pipeline

在通知之前按顺序对事件做变换、补充、丢弃或路由的处理器链。

这页办完你会得到:一条挂在告警规则或通知规则上的处理器链,事件在发出去之前 先从它上面淌过一遍——改标签、补上下文、或者干脆丢掉。

界面上这个功能叫 工作流,入口是 告警通知 → 工作流(/event-pipelines)。

工作流列表工作流列表

1. 新建一条工作流​

点 新增,右侧抽屉里配置,三段:作用范围、处理器、基本信息。

保存之后界面会直接告诉你一句要紧的话:工作流建好后不会自动生效,需要在告警规则或 通知规则里引用它才会执行。 抽屉里那个「去挂载」的接力面板就是干这个的。

2. 作用范围:哪些事件进这条工作流​

条件之间是「与」,全部留空表示所有告警事件都进。

  • 适用标签:按事件标签筛。填 service=mon,就只有带这个标签的事件会进来;
  • 适用属性:按事件的属性筛,可选的属性是固定的四个——业务组、数据源、 是否恢复、告警级别。

「是否恢复」很有用:想让恢复通知不走某个处理器,在这里排掉比在处理器里判条件干净。

3. 处理器:开源版有这五种​

处理器从上往下依次执行,事件是一条线走完的,没有分支。拖动卡片可以调顺序。

分类处理器干什么
降噪事件丢弃按条件丢弃事件,后续处理器不再执行,也不产生通知
富化AI 摘要用大模型给事件生成一段摘要
外呼Webhook 回调把事件回调给外部系统(工单、自动化)
改写事件标签改写修改 / 新增 / 删除事件标签
改写事件更新调用一个 HTTP 接口,并用返回内容更新事件

事件丢弃 用 Go 模板写条件,模板结果是 true 就丢,其他任何输出都放行。 可用变量:$event.Severity(数字 1/2/3)、$event.IsRecovered(布尔)、 $event.RuleName、$event.TagsMap.<标签名>。编辑器里有几个一键示例:

{{ if eq $event.Severity 3 }}true{{ end }}
{{ if $event.IsRecovered }}true{{ end }}
{{ if eq $event.TagsMap.env "dev" }}true{{ end }}

标签改写和事件更新怎么配,见改写标签与补充上下文。 AI 摘要怎么接模型、写提示词、结果落在哪,见AI 摘要处理器。

新建时那张处理器卡片不预选类型,必须自己从下拉里挑一个——类型是必填的,不选就存不下去, 提示是「请选择处理器类型,类型为空的处理器对每条事件都会执行失败」。这条校验存在的理由 也正是这句话。

变量 区可以定义工作流级别的输入变量,处理器里用 {{$inputs.变量名}} 引用, 适合把「同一条流程、不同环境换个地址」这种差异拎出来。

4. 挂到规则上,它才会跑​

两个挂载点,语义不同:

  • 告警规则上挂:事件一产生就跑,影响所有下游——屏蔽、落库、订阅、每一条通知规则 看到的都是处理过的事件。要丢弃事件、要改所有人都能看到的标签,挂这里。
  • 通知规则上挂:只在这条通知规则准备发送前跑,只影响这一次发送。 想给某个群的消息单独加点上下文,挂这里。

在通知规则的表单里,这一段叫 事件处理工作流,点「添加事件处理工作流」选中即可, 每条都能单独启用/停用。

Pipeline 在屏蔽之前跑,所以挂在告警规则上的工作流改出来的标签,屏蔽规则能匹配到。 完整顺序见降噪与路由模型。

几个容易踩的点​

  • 工作流是全局的,权限靠「授权团队」。 基本信息里填的授权团队决定谁能看和改这条工作流, 它本身不绑业务组。
  • 停用工作流不等于解除引用。 引用它的规则还在,只是这条流程被跳过; 删除工作流会让引用它的规则那一段直接失效。
  • 别把第一个处理器设成事件丢弃再去调试。 事件被丢掉后,后面的处理器不会执行, 执行记录里也看不到它们的输出。
  • 顺序有意义。 先改写标签再按标签丢弃,和反过来,结果完全不同。

下一步​