跳到主要内容

数据源 → 规则 → 事件

整个产品挂在三个对象上:规则查询数据源,越界的规则产生事件。

夜莺里对象不少,但只要抓住三个,剩下的都是挂在它们身上的修饰。

三个对象​

数据源 ──被查询──> 告警规则 ──越界时产生──> 事件
│ │ │
存在哪儿 属于哪个业务组 带着标签和注解
怎么连 查什么、什么算越界 走降噪和路由到人

数据源回答「数据在哪儿、怎么连」。它不存数据,只记连接方式: 地址、认证、超时、类型。注册一次,之后规则和查询页面都按名字引用它。

告警规则回答「查什么、什么算越界」。它绑定一个或多个数据源, 带一条查询(PromQL、SQL、LogQL……取决于数据源类型)和一组判定条件: 多久查一次、条件要持续多久才算数、算哪一级。

事件是规则判定的产物。它带着触发时的值、时间、标签和注解, 从这里开始走降噪和路由,最终变成某个人手机上的一条消息。

其他对象都挂在这三个上​

对象挂在哪儿作用
业务组规则、对象、仪表盘都属于某个业务组权限边界,见业务组
屏蔽规则作用在事件上命中就不产生事件,或只是不发通知
订阅规则作用在事件上让别的团队也收到
事件 Pipeline挂在规则或通知规则上改标签、补上下文、丢弃
通知规则消费事件按级别和标签决定发给谁、走哪个媒介
消息模板被通知规则引用决定消息长什么样
仪表盘查询数据源看图,不参与告警

一条数据的完整旅程​

  1. 采集器把指标写进时序库(或者你已有的采集链路本来就在写);
  2. 你在夜莺里把这个时序库注册成数据源;
  3. 一条告警规则每 15 秒拿着 PromQL 去查它;
  4. 某次查询的返回值越界,并且持续了设定的时长 → 产生一个事件;
  5. 事件带着 ident=n9e-web-01、env=prod 这样的标签;
  6. 标签决定它会不会被屏蔽、会不会被某个团队订阅、最后落到哪条通知规则;
  7. 通知规则挑一个媒介和一个模板,把它发出去。

每一步都能在界面上查到:规则页看判定记录,事件页看事件,通知记录看投递结果。

相关​