物联网告警功能设计
物联网中的数据告警设计
1.需求
平台需要具有当某个指标达到某个设定的阀值时进行通知或进行下一步操作,类似于Prometheus监控系统,但是操作要简单化,也就是说在设计触发规则时要支持图形化配置,方便用户配置.
1.1 数据源
数据源为设备数据上传后清洗后放入Kafka,由Flink集群消费设备数据,没有Flink集群也可采用普通集群订阅消费
1.2 告警规则生成
// 上面的UI转换成表达式
String express = "温度 > 45 && 湿度 < 85 && 电压 < 230";
告警规则采用结构化JSON配置, 使用QLExpress表达式引擎来执行规则,只需按业务规则,生成表达式(布尔组合)即可完成告警规则生成
1.3 告警规则执行
ExpressRunner runner = new ExpressRunner();
DefaultContext<String, Object> context = new DefaultContext<String, Object>();
context.put("温度", 50);
context.put("湿度", 80);
context.put("电压", 220);
String express = "温度 > 45 && 湿度 < 85 && 电压 < 230";
Object r = runner.execute(express, context, null, true, false);
// 根据表达式结果进行业务处理
System.out.println(r);