首页 / 业务功能与流程 / 告警全流程
告警全流程
从规则配置、规则拉取缓存、事件评估、告警记录到通知送达的完整链路与状态机。
流程总览
配置面(Java alarm):规则/过滤器/模板
│ gRPC GetEnabledRulesByDeviceName
▼
执行面(Go alertsvr):规则索引缓存 → 事件评估(WHEN-THEN)→ 状态缓存去重
│ NATS 事件
▼
分发面(Go eventsvr):RegisterRule / MatchEvent → 动作(push/log)
▼
事实面(Java):alarm_record 落库 → notify 消息任务 → wssvr / APNs / FCM → App
规则配置(Java)
- 后台/App 通过
AlarmRuleController、AppAlarmRuleController配置规则(触发器 + 过滤器 + 模板) - 规则存储于
alarm_rule/alarm_rule_filter,字典值(条件类型、操作符、过滤逻辑)由 common 字典维护 - 规则变更需同步失效 Go 侧缓存(见下)
规则拉取与缓存(Go)
- alertsvr 启动/周期调用 gRPC
GetEnabledRulesByDeviceName拉取设备启用规则 ruleIndexCache构建按设备/产品索引的本地规则缓存- 规则变更后缓存失效重建,避免每次事件回源 Java
事件评估
| 组件 | 职责 |
|---|---|
mq/consumer + workerPool | NATS 消费设备数据,并发处理 + 消费指标 |
alarmEvaluator | WHEN-THEN 规则评估(条件匹配 → 动作) |
stateCache | 状态缓存:告警去重、冷却 |
pendingRules | 待处理规则队列(pending replay) |
告警记录与通知
- eventsvr 匹配命中后发布告警事件(NATS/JetStream)
- Java alarm 消费事件落
alarm_record(校验订阅权益) - notify 创建消息任务(站内信/推送),跟踪发送状态
- wssvr(实时位置通道)/ APNs / FCM 触达 App
四级事实状态机
| 层级 | 事实 | 状态示例 |
|---|---|---|
| L1 规则命中 | alertsvr 评估结果 | MATCHED / SUPPRESSED(冷却去重) |
| L2 告警记录 | alarm_record | CREATED → PROCESSING → CONFIRMED / CLOSED |
| L3 消息任务 | notify 任务 | PENDING → SENDING → SUCCESS / FAILED / RETRY |
| L4 送达 | 推送通道回执 | DELIVERED / UNREACHABLE |
排查"告警未送达"时按 L1→L4 逐层核对;规则命中 ≠ 通知送达。