首页 / Go 平台(cloud-go) / 告警风控:risksvr + alertsvr + eventsvr

告警链路总览

GPS 数据流(NATS)
        ├─► risksvr:H3 风险区域进出判定 → 告警事件
        ├─► alertsvr:行为规则 WHEN-THEN 评估 → 告警事件
        ▼
   eventsvr:规则匹配 + 动作执行(推送/日志)
        ▼
   Java alarm:落告警记录 → notify:消息任务 → wssvr / APNs / FCM → App

risksvr 区域风险匹配

实时风险检测服务,内部 risk(匹配逻辑)、source(风险区域数据源)、device(设备索引)、mq(NATS 消费):

  • 消费 NATS GPS 数据流,使用 H3 空间索引匹配设备与风险区域
  • 判断设备进入/离开风险区域,发布告警事件到 JetStream
  • 容错机制:冷却去重、批量限流、死信队列

alertsvr 行为规则评估

专门消费设备上报数据并执行行为告警规则判断,不对外提供 RPC API。内部结构:

目录/文件职责
internal/domain/rule规则领域模型
internal/mq/consumerNATS 消费者 + workerPool 并发处理 + 消费指标
internal/processor/alarmEvaluator规则评估引擎(WHEN-THEN)
internal/processor/ruleIndexCache规则索引缓存:启动时从 Java alarm 拉取设备启用规则
internal/processor/stateCache状态缓存:告警去重、冷却
internal/processor/pendingRules待处理规则队列(pending replay)
评估结果必须与 Java 侧告警记录、通知任务配合核对;缓存与队列是性能关键,也是排查"规则不生效/重复告警"的入口。

eventsvr 事件分发

事件规则服务(gRPC event.proto):

  • RegisterRule(ruleExpr, action):注册规则,如动作 push(推送)、log(日志)
  • MatchEvent(payload):匹配事件,返回是否命中与动作
  • 将告警实时推送至车主 App 端(联动 wssvr / 推送通道)

排查要点

  • 按链路逐段确认:数据是否到达 risksvr/alertsvr → 规则是否命中 → 事件是否发布 → Java 是否落记录。
  • 规则变更后检查 alertsvr 规则索引缓存是否刷新。
  • 重复/漏告警:检查 stateCache 去重与 JetStream 消费组、pendingRules 重放。