告警与恢复告警原理及实现

时间:2022-09-13 00:55:34

告警与恢复告警原理及实现


一、背景

自“双碳” 政策提出 以来, KaiwuDB 聚焦“数字能 源”领域,为用户打造 数字能源管理平台 ,旨在提升综合能源和碳资产管理能力。


数字能源管理平台 是以  KaiwuDB 为核心建设的云-边-端一体化数据服务平台,致力于为 IoT、工业互联网、数字能源、交通车联网、等行业提供从数据产生、采集、汇聚到数据分析、应用、归档的全生命周期的数据服务。


数字能源是物联网技术与能源产业的深度融合,通过能源设施的物联接入,并依托大数据及人工智能,打通物理世界与数字世界,信息流与能量流互动,实现能源品类的跨越和边界的突破,放大设施效用,品类协同优化。


二、规则使用组件介绍

A、DAG 介绍

DAG(Directed Acyclic Graph,有向无环图)是一种数据结构,表示的是一张有向图,并且在这个图中,从任意顶点出发都无法回到该点(无环),如图所示


告警与恢复告警原理及实现


B、go-streams 简介

go-streams 是一个流式处理库,它提供一种简单、简洁的方式构建数据处理的管道。


告警与恢复告警原理及实现


在计算中,管道也称为数据管道,是一组串联连接的数据处理元件,其中一个元件的输出是下一个元件的输入。管道的元素通常以并行或时间切片的方式执行,通常在元素之间插入一定量的缓冲存储器。


C、告警规则与恢复告警规则介绍

在当前的数字能源平台中,可能会存在各种偶然情况,所以我们在指定时间窗口内,当异常数据个数达到总数据的指定百分比时才被判定为告警情况。


比如说,用户设置 endpoint1 采集点,设置异常数据占比总数量的 60% 时触发一级告警,设置告警窗口为 5 秒。


假设在这 5 秒内 endpoint1 传过来的数据有 100 条,此时当异常数据的数量达到或超过 100*60%=60 时,触发一级告警;如果异常数据的数量没有达到 100*60%=60 条,则不触发一级告警。


这里的 60% 是人为设置的,由用户来判断在一段时间窗口内,异常数据达到总数据的百分比数,从而来确定是否触发告警等级。


D、告警与恢复告警规则设置值介绍

用户定义对目标采集点的监控,设置的值包含:

  • 该目标采集点的 id

  • 该目标采集点的告警规则列表,也意味着同一个采集点可以有多个不同级别的告警


规则列表中单个规则包含的值有:

  • 告警等级

  • 告警取值范围

  • 告警数据数量占比的百分数

  • 告警窗口大小

  • 恢复告警窗口大小

  • 告警重复发送的时间


E、告警与恢复告警规则返回值参数介绍

若触发告警与恢复告警规则,用户和管理人员拿到的告警信息,包含的值为:

  • 触发告警与恢复告警规则的目标采集点 id

  • 该目标采集点触发或恢复到的告警等级

  • 告警类型(告警、恢复告警、重复告警)

  • 触发该次告警或恢复告警的时间

  • 告警数据

三、  规则原理及流程说明

A、告警与恢复告警规则流程说明


告警与恢复告警原理及实现


  • 数字能源平台从 Kafka source 中获取批次的所有数据信息(图内标题 1)

  • 数字能源平台将所有数据信息分成单点数据(图内标题 2)

  • 将单点数据同时全部发给分区流程(图内标题 3)

  • 分区流程过滤掉没被监控的数据,并按照时间窗口的大小将数据进行分区(图内标题 4、14,4 为告警流程,14 为恢复告警流程)

  • 按照分区流程的时间窗口创建时间窗口(图内标题 5、8、11、15、18、21)

  • 在时间窗口内将满足告警条件数据进行包装(图内标题 6、9、12、16、19、22)

  • 将包装起来的数据设置为告警流程发过来的数据或恢复告警流程发过来的数据(图内标题 7、10、13 为告警流程发过来的数据,17、20、23 为恢复告警流程发过来的数据)

  • 将所有包装好的数据发送到同一节点(图内标题 24)

  • 判断告警等级流程将传过来的数据判断每个采集点当前的告警等级(图内标题 25)

  • 将每个采集点对应的告警等级信息包装成返回值的格式(图内标题 26)

  • 将包装好的数据发给数据目标(图内标题 27)


B、告警等级设置说明

每一个被检测的采集点都会设置一个或多个告警等级,比如我们在 endpoint1 采集点上设置正常情况、1 级告警、2 级告警、3 级告警、4 级告警、5 级告警,数字越大代表越严重。


通常情况下,我们对每一个采集点都通过维护一个栈来保存这个采集点的告警信息,这个采集点当前的告警等级,即是栈顶保存的告警等级。若当前告警等级大于栈顶元素,则该告警等级进栈,代表当前告警等级提高;若当前告警等级小于等于栈顶元素,则不做任何处理。


告警与恢复告警原理及实现


C、恢复告警等级设置说明

我们对当前恢复告警等级对栈内元素进行比较,从栈顶开始,若栈顶元素大于当前恢复告警等级,则栈顶元素出栈,继续比较新栈顶元素与当前恢复告警等级,直至栈顶元素小于等于当前告警等级。


告警与恢复告警原理及实现


若在比较的过程中,已有栈顶元素被弹出,新栈顶元素小于当前恢复告警等级,则将当前恢复告警等级进栈,并发送一条设置告警的记录。


告警与恢复告警原理及实现


若在比较的过程中,没有栈顶元素被弹出,最开始的栈顶元素小于当前恢复告警等级,则不作处理。


告警与恢复告警原理及实现


D、重复发送告警等级设置说明

当一个采集点的告警等级栈长时间没有更改,也就是没有进栈操作也没有出栈操作,将对用户重新发送一个当前栈顶元素的告警信息。意为长时间没有对当前告警做出处理,重复提醒。


四、总结

通过告警规则及恢复告警规则,可以减少人力监控,也是自动化运维的一种手段。对于数字能源平台来说,一个采集点出现的问题,首先平台要第一时间知晓而不是等待用户反馈。通过告警规则与恢复告警规则,也大幅减少了运维人员去查看日志的时间。