CN112906373A - 告警计算方法、装置、电子设备及存储介质 - Google Patents
告警计算方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112906373A CN112906373A CN202110195068.XA CN202110195068A CN112906373A CN 112906373 A CN112906373 A CN 112906373A CN 202110195068 A CN202110195068 A CN 202110195068A CN 112906373 A CN112906373 A CN 112906373A
- Authority
- CN
- China
- Prior art keywords
- alarm
- data
- calculation
- expression
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/221—Parsing markup language streams
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种告警计算方法、装置、电子设备及存储介质,涉及数据分析技术领域。所述方法包括:将采集的数据写入消息队列;通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。该方法结合流数据实时计算和领域专用语言进行告警计算,可以对自定义的表达式规则进行语法解析及实时修改,进行告警计算,提高了告警计算的灵活性。
Description
技术领域
本申请涉及数据分析技术领域,具体而言,涉及一种告警计算方法、装置、电子设备及存储介质。
背景技术
当设备发生故障或某些原因导致系统发生不正常的工作或某些功能影响用户体验的情况下,系统可以根据不同类型的故障,对故障进行分析并通过一定的告警方式通知用户或者网络管理员,这就是实现告警功能的目的。告警发现的越早,越能够及时减少损失。告警的及时发现,有利于快速定位发现问题,及时止损。
目前大部分现有技术的告警计算都是基于单机的服务器模式,对于海量的告警计算都得依托于分布式的实时计算框架,Spark Streaming和Flink是当今分布式实时计算领域的主流计算框架,各自有各自的优势,但是这些分布式计算框架的学习成本是很高的。Spark因为高效的数据处理能力被广泛使用,park Streaming作为流式计算,因为其和Spark的批处理使用的集群是一样的,所以采用其作为流式处理框架更加合理,不用再单独搭建集群,可以让流批一体。Spark Streaming是一种实时流式处理框架,是Spark API的扩展,支持可扩展、高吞吐量、容错的实时数据流处理,实时数据的来源可以是Kafka、Flume、Twitter、ZeroMQ或者TCP(ransmission Control Protocol,传输控制协议)Sockets,并且可以使用高级功能的复杂算子来处理流数据。例如:map、reduce、join和window等。最终,处理后的数据可以存放在文件系统,数据库等,方便实时展现。
随着大数据、人工智能和物联网的发展,数据越来越多,系统越来越多,如何快速的发现问题,及时止损,已经是一个亟待解决的问题,例如金融领域,需要做到实时风控告警,对数据的时效性计算要求很高,业务也很复杂,告警的计算逻辑复杂多变,但现有技术中的告警系统中表达式的格式是固定的,无法满足多变的用户规则变化需求,也无法支持复杂的告警规则,无法让用户配置修改完成告警计算,灵活性较低,进行表达式更改时需要耗费大量的时间和人力成本。
发明内容
有鉴于此,本申请实施例的目的在于提供一种告警计算方法、装置、电子设备及存储介质,以改善现有技术中存在的灵活性较低的问题。
本申请实施例提供了一种告警计算方法,所述方法包括:将采集的数据写入消息队列;通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。
在上述实现方式中,结合流数据实时计算和领域专用语言进行告警计算,可以对自定义的表达式规则进行语法解析和实时修改,以及通过流数据实时计算框架进行实时的数据获取和告警计算,提高了告警计算的灵活性。
可选地,所述将采集的数据写入消息队列,包括:通过应用程序接口或硬编码方式从日志采集系统、业务系统、运维系统和平台系统中的至少一个中实时采集所述数据,并将所述数据写入所述消息队列。
在上述实现方式中,通过日志采集系统、业务系统、运维系统和平台系统进行多方面的数据采集,提高了数据采集的全面性。
可选地,在所述通过流数据实时计算框架,基于领域专用语言解析告警表达式之前,所述方法还包括:从分布式文件系统获取所述告警表达式;将所述告警表达式分发至所述流数据实时计算框架中的计算集群中,以使所述计算集群将所述告警表达式存储在执行内存中,用于所述流数据实时计算框架获取。
在上述实现方式中,把告警表达式的相关数据分发到流数据实时计算框架的计算集群的Executor中,直接让告警表达式的规则常驻在Executor内存中,避免每次任务运行时的频繁加载拉取,提高计算效率。
可选地,所述通过流数据实时计算框架,基于领域专用语言解析告警表达式,包括:在所述流数据实时计算框架中,基于指定领域专用语言文法,采用Scala的解析组合子确定所述告警表达式的词法分析结果;基于所述词法分析结果,采用递归语法确定所述告警表达式的表达式逻辑,所述表达式逻辑包括常量、变量、运算符和函数;将所述常量作为所述告警表达式对应的所述指标。
在上述实现方式中,基于领域专用语言解析告警表达式,将其与流数据实时计算框架相结合,可以在页面配置告警计算告警表达式,通过流数据实时计算框架动态加载数据,利用DSL对表达式进行实时动态地解析编译,实现对告警表达式的灵活修改及实时修改,提高了告警计算的灵活性。
可选地,所述通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据,包括:通过所述流数据实时计算框架,基于Direct streaming方式从所述消息队列中获得批次消息的消费范围;基于所述消费范围从所述执行内存中获取所述批次消息;对所述批次消息进行清洗和汇聚,以获得与所述指标对应的所述指标数据。
在上述实现方式中,基于Direct streaming方式进行数据清洗和汇聚,从而确定告警表达式作出告警判断所需的数据,避免对无用数据进行处理,提高了告警计算的效率。
可选地,所述通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果,包括:通过所述流数据实时计算框架,基于所述常量、所述变量、所述运算符和所述函数确定所述告警表达式的计算函数;将所述指标数据转换为Map数据,所述Map数据的键为所述指标的指标变量名,所述Map数据的值为所述指标数据;将所述Map数据输入至所述告警表达式的所述计算函数进行计算;将所述计算函数的计算结果转换为Boolean值的形式作为所述告警结果。
在上述实现方式中,通过流数据实时计算框架对告警表达式的实时解析的结果,将指标数据代入告警表达式的计算函数进行计算,不需要告警表达式为固定格式,可对告警表达式进行修改,提高了告警计算的灵活性。
可选地,所述方法还包括:将所述告警结果写入指定数据库;基于所述指定数据库中的所述告警结果进行告警推送。
在上述实现方式中,对告警结果进行存储和推送,确保对象能够及时接受告警信息,提高了告警安全性。
本申请实施例还提供了一种告警计算装置,所述装置包括:数据采集模块,用于将采集的数据写入消息队列;指标确定模块,用于通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;指标数据确定模块,用于通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;告警计算模块,用于通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。
在上述实现方式中,结合流数据实时计算和领域专用语言进行告警计算,可以对自定义的表达式规则进行语法解析和实时修改,以及通过流数据实时计算框架进行实时的数据获取和告警计算,提高了告警计算的灵活性。
可选地,所述数据采集模块具体用于:通过应用程序接口或硬编码方式从日志采集系统、业务系统、运维系统和平台系统中的至少一个中实时采集所述数据,并将所述数据写入所述消息队列。
在上述实现方式中,通过日志采集系统、业务系统、运维系统和平台系统进行多方面的数据采集,提高了数据采集的全面性。
可选地,所述告警计算装置还包括:告警表达式获取模块,用于从分布式文件系统获取所述告警表达式;将所述告警表达式分发至所述流数据实时计算框架中的计算集群中,以使所述计算集群将所述告警表达式存储在执行内存中,用于所述流数据实时计算框架获取。
在上述实现方式中,把告警表达式的相关数据分发到流数据实时计算框架的计算集群的Executor中,直接让告警表达式的规则常驻在Executor内存中,避免每次任务运行时的频繁加载拉取,提高计算效率。
可选地,所述指标确定模块具体用于:在所述流数据实时计算框架中,基于指定领域专用语言文法,采用Scala的解析组合子确定所述告警表达式的词法分析结果;基于所述词法分析结果,采用递归语法确定所述告警表达式的表达式逻辑,所述表达式逻辑包括常量、变量、运算符和函数;将所述常量作为所述告警表达式对应的所述指标。
在上述实现方式中,基于领域专用语言解析告警表达式,将其与流数据实时计算框架相结合,可以在页面配置告警计算告警表达式,通过流数据实时计算框架动态加载数据,利用DSL对表达式进行实时动态地解析编译,实现对告警表达式的灵活修改及实时修改,提高了告警计算的灵活性。
可选地,所述指标数据确定模块具体用于:通过所述流数据实时计算框架,基于Direct streaming方式从所述消息队列中获得批次消息的消费范围;基于所述消费范围从所述执行内存中获取所述批次消息;对所述批次消息进行清洗和汇聚,以获得与所述指标对应的所述指标数据。
在上述实现方式中,基于Direct streaming方式进行数据清洗和汇聚,从而确定告警表达式作出告警判断所需的数据,避免对无用数据进行处理,提高了告警计算的效率。
可选地,所述告警计算模块具体用于:通过所述流数据实时计算框架,基于所述常量、所述变量、所述运算符和所述函数确定所述告警表达式的计算函数;将所述指标数据转换为Map数据,所述Map数据的键为所述指标的指标变量名,所述Map数据的值为所述指标数据;将所述Map数据输入至所述告警表达式的所述计算函数进行计算;将所述计算函数的计算结果转换为Boolean值的形式作为所述告警结果。
在上述实现方式中,通过流数据实时计算框架对告警表达式的实时解析的结果,将指标数据代入告警表达式的计算函数进行计算,不需要告警表达式为固定格式,可对告警表达式进行修改,提高了告警计算的灵活性。
可选地,所述告警计算装置还包括:告警推送模块,用于将所述告警结果写入指定数据库;基于所述指定数据库中的所述告警结果进行告警推送。
在上述实现方式中,对告警结果进行存储和推送,确保对象能够及时接受告警信息,提高了告警安全性。
本申请实施例还提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行上述任一实现方式中的步骤。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述任一实现方式中的步骤。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种告警计算方法的流程示意图。
图2为本申请实施例提供的一种基于领域专用语言的告警表达式解析步骤的流程示意图。
图3为本申请实施例提供的一种指标数据确定步骤的流程示意图。
图4为本申请实施例提供的一种告警计算步骤的流程示意图。
图5为本申请实施例提供的一种告警计算装置的模块示意图。
图标:20-告警计算装置;21-数据采集模块;22-指标确定模块;23-指标数据确定模块;24-告警计算模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。
经本申请人研究发现,现有的告警系统主要存在以下问题:(1)实时计算采用Spark Streaming或者Flink计算,但是都是依赖Spark Streaming或者Flink清洗指标,然后基于指标A大于某个值这种模式,表达式是固定的,如果要改变阈值或者增加复杂的表达式条件,则需要重新写代码发布,同时复杂的表达式计算比如:指标A>5与指标B<2,并不支持计算,除非代码固定格式计算,无法满足多变的用户规则变化需求,也无法支持复杂的告警规则,无法让用户配置修改完成告警计算;(2)大部分告警实时计算都依赖单机服务器运行,对于海量的告警计算无法分布式计算。
为了解决上述问题,本申请实施例提供了一种告警计算方法,请参考图1,图1为本申请实施例提供的一种告警计算方法的流程示意图,该告警计算方法的具体步骤可以如下:
步骤S12:将采集的数据写入消息队列。
具体地,上述数据的采集可以是通过应用程序接口或硬编码方式,从日志采集系统、业务系统、运维系统和平台系统中的至少一个中实时采集,也可以从物联网设备实时采集,其具体方式取决于生产系统生产数据的能力。
可选地,本实施例中的消息队列可以是Kafka集群,Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,常见可以用于web/nginx日志、访问日志,消息服务等等,其主要应用于日志收集系统和消息系统,由于其具有高吞吐量、数据持久化、支持Kafka服务器和消费机集群来分区消息等优点,本实施例选用Kafka实现消费队列。
在消息队列为Kafka集群时,采集来的数据需要送入Kafka集群进行数据管理,利用Kafka集群的特性,后续流式计算的数据来源一般都是从Kafka对接而来。其中,将数据写入Kafka集群的具体步骤可以如下:
步骤S121:约定数据的消息格式。
每个消息是一个ProducerRecord对象,必须指定消息所属的Topic(消息分类)和消息值Value,此外还可以指定消息所属的Partition(Topic物理上的分组)以及消息的Key(键)。
步骤S122:序列化ProducerRecord。
步骤S123:如果在ProducerRecord中指定了Partition,则Partitioner不做任何事情;否则,Partitioner根据消息的Key得到一个Partition,基于该Partition确定向对应Topic下的对应Partition发送消息。
步骤S124:消息被添加到相应的Batch(批)中,独立的线程将这些Batch发送到Broker(缓存代理)上。
步骤S125:Broker收到消息会返回响应。
如果消息成功写入Kafka,则返回RecordMetaData对象,该对象包含了Topic信息、Patition信息、消息在Partition中的Offset(偏移)信息;若失败,返回一个错误。
本实施例后续需要通过流数据实时计算框架进行告警表达式解析和告警计算等,可选地,本实施例中的实时计算框架可以是Spark Streaming。Spark是用于大规模数据处理的统一分析引擎,它提供了Scala、Java、Python等高级API(Application ProgrammingInterface,应用程序接口),以及优化的引擎,该引擎支持用于数据分析的通用计算图;它还支持丰富的高级工具集,包括用于SQL(Structured Query Language,结构化查询语言)和DataFrames的Spark SQL,用于机器学习的MLlib,用于图形处理的GraphX和用于流处理的结构化流,有利于进行数据实时分析处理。Spark Streaming是Spark核心API的一个扩展框架,可以实现高吞吐量的,具备容错机制的实时流数据处理,可以接收Kafka、Flume(日志收集系统)、HDFS(Hadoop分布式文件系统)等各种来源的实时输入数据,进行处理后,处理结构保存在HDFS、DataBase(数据库)等各种地方。
应当理解的是,在执行后续步骤S14之前,本实施例中Spark Streaming需要从Kafka消息队列中获取数据,Spark Streaming接收Kafka的消息有两种方式,一种是基于Receiver的方法采用Kafka的高级消费者API,每个Executor(执行内存)进程都不断拉取消息,可自动更新ZooKeeper中的Offset。它可以保证At least once语义,但无法保证Exactly once语义;另一种是基于Direct stream的方法采用Kafka的简单消费者API,简化了获取消息的流程。Executor不再从Kafka中连续读取消息,也消除了Receiver和WAL(Write-Ahead Logging,预写日志系统),且Kafka分区与RDD(Resiliennt DistributedDatasets,抽象弹性分布式数据集)分区是一一对应的,允许用户控制Topic-partition的Offset,程序变得更加可控。
可选地,本实施例中可以采用Direct stream的方法从Kafka集群进行消息获取,Driver进程只需要每次从Kafka获得批次消息的消费范围(Offset range),然后Executor进程根据Offset range去读取该批次对应的消息即可。由于Offset在Kafka中能唯一确定一条消息,且在外部只能被Streaming程序本身感知到,因此消除了不一致性,保证了Exactly once语义。
由于Kafka集群中的数据多而繁杂,若Spark Streaming全部获取则需要消耗大量,因此本实施例中Spark Streaming对每次告警计算的告警表达式所需要的使用的数据进行抓取即可,则需要先获取告警表达式,其具体步骤如下:
步骤S131:从分布式文件系统获取告警表达式。
其中,告警表达式是当前Spark Streaming的计算任务对应的告警表达式,其可以是操作人员进行配置获得,例如可以使用页面配置,在页面上可以托拉拽配置告警表达式,告警表达式的示例可以是:指标A>6&&指标B<7等。告警表达式在配置完成后会批量下发到Hdfs上,以文件的方式存储,利用SparkContext.textFile对规则文件进行读取。
步骤S132:将告警表达式分发至流数据实时计算框架中的计算集群中,以使计算集群将告警表达式存储在执行内存中,用于流数据实时计算框架获取。
本实施例中为了提升Spark Streaming读取告警表达式的性能,本发明在读取告警表达式文件时做了优化,对读取之后的文件做Collect(收集)操作,从而把数据从Hdfs上收集到Spark集群的Driver端,并采用Broadcast(广播功能)对告警表达式进行广播,把告警表达式的数据分发到Spark集群的Executor中,直接让告警表达式常驻在Executor内存中,避免每次任务运行时的频繁加载拉取。
可选地,上述具体的广播实现可以采用SparkContext.broadcast(var)。
步骤S14:通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得告警表达式对应的指标。
其中,领域专用语言(Domain Specified Language,DSL)指的是专注于某个应用程序领域的计算机语言,不同于普通的跨领域通用计算机语言,领域专用语言只用在某些特定的领域,比如用来显示网页的HTML,以及Emacs所使用的Emac LISP语言。
具体地,请参考图2,图2为本申请实施例提供的一种基于领域专用语言的告警表达式解析步骤的流程示意图,该告警表达式解析步骤具体可以如下:
步骤S141:在流数据实时计算框架中,基于指定领域专用语言文法,采用Scala的解析组合子确定告警表达式的词法分析结果。
上述步骤S141实际上为利用Scala的解析组合子进行文法实现,继承JavaTokenParsers,获取词法分析结果。
其中,指定领域专用语言文法为预先约定的文法,例如常规的指标A+指标B,在代码层面其加法是“+”,但是在面向领域建模时,方便用户理解时,可以写成指标A加指标B,因此,对于DSL的表达式形式可根据需要自定义,并形成文法。
步骤S142:基于词法分析结果,采用递归语法确定告警表达式的表达式逻辑,表达式逻辑包括常量、变量、运算符和函数。
此外,表达式逻辑还可以包括运算符的优先级和变量的符号等,其中运算符的优先级可以是乘法,除法的优先级比加法,减法的优先级高,则乘法和除法的表达式建立在加法和减法之上。
步骤S143:将常量作为告警表达式对应的指标。
在确定告警表达式的指标后,接下来可以从获取的大量数据中筛选出告警表达式所需要的数据。
步骤S16:通过流数据实时计算框架,从消息队列中获取指标对应的指标数据。
具体地,请参考图3,图3为本申请实施例提供的一种指标数据确定步骤的流程示意图,该指标数据确定步骤可以如下:
步骤S161:通过流数据实时计算框架,基于Direct streaming方式从消息队列中获得批次消息的消费范围。
步骤S162:基于消费范围从执行内存中获取批次消息。
步骤S163:对批次消息进行清洗和汇聚,以获得与指标对应的指标数据。
具体地,使用Spark Streaming的flapMap、map、Filter、reduceByKey等API算子进行数据的清洗和汇聚,将数据汇聚成指标数据,比如:StreamingContext.map(_.value).flatMap(_.split("")).reduceByKey(_+_),从而得到一个指标或者多个指标的汇聚结果。
步骤S18:通过流数据实时计算框架,将指标数据代入告警表达式进行计算,以获得告警结果。
具体地,请参考图4,图4为本申请实施例提供的一种告警计算步骤的流程示意图,该告警计算步骤可以如下:
步骤S181:通过流数据实时计算框架,基于常量、变量、运算符和函数确定告警表达式的计算函数。
具体地,步骤S181是基于领域专用语言对告警表达式进行动态编译,调用Scala解析组合子的编译功能,动态编译告警表达式,获取告警表达式中的常量,变量,运算符,函数等。
步骤S182:将指标数据转换为Map数据,Map数据的键为指标的指标变量名,Map数据的值为指标数据。
步骤S183:将Map数据输入至告警表达式的计算函数进行计算。
应当理解的是,步骤S184的前提是,本实施例在设置领域专用语言对告警表达式的编译方式时,调用Scala解析组合子的计算值功能获取计算结果,将结果包装成接口,一个是算值接口,直接返回,一个是算Boolean接口,非0是True,0为False。
步骤S184:将计算函数的计算结果转换为Boolean值的形式作为告警结果。
可选地,在告警结果获得后,还可以使用Filter算子把满足条件的告警进行过滤输出,并把过滤后的告警结果写入到数据库。
进一步地,计算完成后的告警结果需要写入数据库,方便页面查询告警结果,并进行工单处理。具体地,Spark Streaming处理完之后可以把结果写入Kafka或者Redis或者Mysql等,方便进一步的页面查询,可对接多种数据写入接口,把告警结果写入到数据库中。
同时为了保证相关人员对告警信息的获取,告警结果计算出来后,需要及时把告警结果推送给用户,让用户及时感知到目前发生的问题,通知方式可以包括短信、邮箱电话和通讯软件等。
具体地,推送时可短信发送简单信息,提醒用户,如:XX发生异常,请及时排查。在邮件通讯软件中可推送详细的图文信息,推送丰富的数据和趋势图,帮助用户快速确认问题。
为了配合本实施例提供的上述告警计算方法,本申请实施例还提供了一种告警计算装置20,请参考图5,图5为本申请实施例提供的一种告警计算装置的模块示意图。
告警计算装置20包括:
数据采集模块21,用于将采集的数据写入消息队列;
指标确定模块22,用于通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得告警表达式对应的指标;
指标数据确定模块23,用于通过流数据实时计算框架,从消息队列中获取指标对应的指标数据;
告警计算模块24,用于通过流数据实时计算框架,将指标数据代入告警表达式进行计算,以获得告警结果。
可选地,数据采集模块21具体用于:通过应用程序接口或硬编码方式从日志采集系统、业务系统、运维系统和平台系统中的至少一个中实时采集数据,并将数据写入消息队列。
可选地,告警计算装置20还包括:告警表达式获取模块,用于从分布式文件系统获取告警表达式;将告警表达式分发至流数据实时计算框架中的计算集群中,以使计算集群将告警表达式存储在执行内存中,用于流数据实时计算框架获取。
可选地,指标确定模块22具体用于:在流数据实时计算框架中,基于指定领域专用语言文法,采用Scala的解析组合子确定告警表达式的词法分析结果;基于词法分析结果,采用递归语法确定告警表达式的表达式逻辑,表达式逻辑包括常量、变量、运算符和函数;将常量作为告警表达式对应的指标。
可选地,指标数据确定模块23具体用于:通过流数据实时计算框架,基于Directstreaming方式从消息队列中获得批次消息的消费范围;基于消费范围从执行内存中获取批次消息;对批次消息进行清洗和汇聚,以获得与指标对应的指标数据。
可选地,告警计算模块24具体用于:通过流数据实时计算框架,基于常量、变量、运算符和函数确定告警表达式的计算函数;将指标数据转换为Map数据,Map数据的键为指标的指标变量名,Map数据的值为指标数据;将Map数据输入至告警表达式的计算函数进行计算;将计算函数的计算结果转换为Boolean值的形式作为告警结果。
可选地,告警计算装置20还包括:告警推送模块,用于将告警结果写入指定数据库;基于指定数据库中的告警结果进行告警推送。
本申请实施例还提供了一种电子设备,该电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器读取并运行所述程序指令时,执行本实施例提供的告警计算方法中任一项所述方法中的步骤。
应当理解是,该电子设备可以是个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备。
本申请实施例还提供了一种可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行告警计算方法中的步骤。
综上所述,本申请实施例提供了一种告警计算方法、装置、电子设备及存储介质,所述方法包括:将采集的数据写入消息队列;通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。
在上述实现方式中,利用Spark Streaming的分布式实时处理能力,可实时计算海量的指标,对数据进行清洗汇聚,对于频繁发生的告警规则,为了减少硬编码,提升告警上线时间,让用户在页面配置告警规则,利用领域专用语言进行告警规则的动态解析,结合Spark Streaming和领域专用语言实现海量告警基于规则的动态计算。该套方法,可用于海量告警的实时计算,可用于告警表达式的动态解析,可用于任何系统的实时数据分析或者告警计算系统中,对于告警表达式的频繁变更修改,不需要硬编码,即使复杂的告警表达式逻辑也支持计算,比现有的实现方案灵活,更易用,从技术上实现了真正的告警规则计算自动化。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。因此本实施例还提供了一种可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行区块数据存储方法中任一项所述方法中的步骤。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RanDom Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种告警计算方法,其特征在于,所述方法包括:
将采集的数据写入消息队列;
通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;
通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;
通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。
2.根据权利要求1所述的方法,其特征在于,所述将采集的数据写入消息队列,包括:
通过应用程序接口或硬编码方式从日志采集系统、业务系统、运维系统和平台系统中的至少一个中实时采集所述数据,并将所述数据写入所述消息队列。
3.根据权利要求1所述的方法,其特征在于,在所述通过流数据实时计算框架,基于领域专用语言解析告警表达式之前,所述方法还包括:
从分布式文件系统获取所述告警表达式;
将所述告警表达式分发至所述流数据实时计算框架中的计算集群中,以使所述计算集群将所述告警表达式存储在执行内存中,用于所述流数据实时计算框架获取。
4.根据权利要求3所述的方法,其特征在于,所述通过流数据实时计算框架,基于领域专用语言解析告警表达式,包括:
在所述流数据实时计算框架中,基于指定领域专用语言文法,采用Scala的解析组合子确定所述告警表达式的词法分析结果;
基于所述词法分析结果,采用递归语法确定所述告警表达式的表达式逻辑,所述表达式逻辑包括常量、变量、运算符和函数;
将所述常量作为所述告警表达式对应的所述指标。
5.根据权利要求4所述的方法,其特征在于,所述通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据,包括:
通过所述流数据实时计算框架,基于Direct streaming方式从所述消息队列中获得批次消息的消费范围;
基于所述消费范围从所述执行内存中获取所述批次消息;
对所述批次消息进行清洗和汇聚,以获得与所述指标对应的所述指标数据。
6.根据权利要求5所述的方法,其特征在于,所述通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果,包括:
通过所述流数据实时计算框架,基于所述常量、所述变量、所述运算符和所述函数确定所述告警表达式的计算函数;
将所述指标数据转换为Map数据,所述Map数据的键为所述指标的指标变量名,所述Map数据的值为所述指标数据;
将所述Map数据输入至所述告警表达式的所述计算函数进行计算;
将所述计算函数的计算结果转换为Boolean值的形式作为所述告警结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述告警结果写入指定数据库;
基于所述指定数据库中的所述告警结果进行告警推送。
8.一种告警计算装置,其特征在于,所述装置包括:
数据采集模块,用于将采集的数据写入消息队列;
指标确定模块,用于通过流数据实时计算框架,基于领域专用语言解析告警表达式,以获得所述告警表达式对应的指标;
指标数据确定模块,用于通过所述流数据实时计算框架,从所述消息队列中获取所述指标对应的指标数据;
告警计算模块,用于通过所述流数据实时计算框架,将所述指标数据代入所述告警表达式进行计算,以获得告警结果。
9.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器中存储有程序指令,所述处理器运行所述程序指令时,执行权利要求1-7中任一项所述方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器运行时,执行权利要求1-7任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195068.XA CN112906373A (zh) | 2021-02-20 | 2021-02-20 | 告警计算方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110195068.XA CN112906373A (zh) | 2021-02-20 | 2021-02-20 | 告警计算方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112906373A true CN112906373A (zh) | 2021-06-04 |
Family
ID=76124204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110195068.XA Pending CN112906373A (zh) | 2021-02-20 | 2021-02-20 | 告警计算方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112906373A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377624A (zh) * | 2021-07-02 | 2021-09-10 | 华青融天(北京)软件股份有限公司 | 信息安全告警方法、装置和电子设备 |
CN114826773A (zh) * | 2022-06-02 | 2022-07-29 | 合肥卓讯云网科技有限公司 | 一种基于日志数据的自定义日志告警方法和装置 |
CN113377624B (zh) * | 2021-07-02 | 2024-05-28 | 华青融天(北京)软件股份有限公司 | 信息安全告警方法、装置和电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357061A (zh) * | 2015-12-11 | 2016-02-24 | 普华基础软件股份有限公司 | 一种基于大数据流处理技术的运维监控分析系统 |
CN105471854A (zh) * | 2015-11-18 | 2016-04-06 | 国网智能电网研究院 | 一种基于多级策略的自适应边界异常检测方法 |
CN110148285A (zh) * | 2019-05-15 | 2019-08-20 | 东营汉威石油技术开发有限公司 | 一种基于大数据技术的油井参数智能预警系统及其预警方法 |
CN111026749A (zh) * | 2019-11-11 | 2020-04-17 | 支付宝(杭州)信息技术有限公司 | 业务告警方法及装置 |
CN111241051A (zh) * | 2020-01-07 | 2020-06-05 | 深圳迅策科技有限公司 | 批量数据处理方法、装置、终端设备及存储介质 |
CN111736744A (zh) * | 2020-07-22 | 2020-10-02 | 成都新希望金融信息有限公司 | 一种基于dsl的监控预警计算子系统 |
-
2021
- 2021-02-20 CN CN202110195068.XA patent/CN112906373A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105471854A (zh) * | 2015-11-18 | 2016-04-06 | 国网智能电网研究院 | 一种基于多级策略的自适应边界异常检测方法 |
CN105357061A (zh) * | 2015-12-11 | 2016-02-24 | 普华基础软件股份有限公司 | 一种基于大数据流处理技术的运维监控分析系统 |
CN110148285A (zh) * | 2019-05-15 | 2019-08-20 | 东营汉威石油技术开发有限公司 | 一种基于大数据技术的油井参数智能预警系统及其预警方法 |
CN111026749A (zh) * | 2019-11-11 | 2020-04-17 | 支付宝(杭州)信息技术有限公司 | 业务告警方法及装置 |
CN111241051A (zh) * | 2020-01-07 | 2020-06-05 | 深圳迅策科技有限公司 | 批量数据处理方法、装置、终端设备及存储介质 |
CN111736744A (zh) * | 2020-07-22 | 2020-10-02 | 成都新希望金融信息有限公司 | 一种基于dsl的监控预警计算子系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377624A (zh) * | 2021-07-02 | 2021-09-10 | 华青融天(北京)软件股份有限公司 | 信息安全告警方法、装置和电子设备 |
CN113377624B (zh) * | 2021-07-02 | 2024-05-28 | 华青融天(北京)软件股份有限公司 | 信息安全告警方法、装置和电子设备 |
CN114826773A (zh) * | 2022-06-02 | 2022-07-29 | 合肥卓讯云网科技有限公司 | 一种基于日志数据的自定义日志告警方法和装置 |
CN114826773B (zh) * | 2022-06-02 | 2024-04-16 | 合肥卓讯云网科技有限公司 | 一种基于日志数据的自定义日志告警方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107145489B (zh) | 一种基于云平台的客户端应用的信息统计方法和装置 | |
Gao | Towards the next generation intelligent BPM–in the era of big data | |
CN105183625A (zh) | 一种日志数据处理方法和装置 | |
US11243652B2 (en) | Team knowledge sharing | |
CN112181960B (zh) | 一种基于AIOps的智能运维框架系统 | |
CN112527886A (zh) | 一种基于城市大脑的数据仓库系统 | |
CN108768790A (zh) | 分布式搜索集群监控方法及装置、计算设备、存储介质 | |
CN113468019A (zh) | 基于Hbase的指标监控方法、装置、设备及存储介质 | |
CN111177237B (zh) | 一种数据处理系统、方法及装置 | |
KR20150118963A (ko) | 큐 모니터링 및 시각화 | |
CN112148578A (zh) | 基于机器学习的it故障缺陷预测方法 | |
CN113032252A (zh) | 埋点数据的收集方法、装置、客户端设备和存储介质 | |
CN113760677A (zh) | 异常链路分析方法、装置、设备及存储介质 | |
Bielefeld | Online performance anomaly detection for large-scale software systems | |
Akanbi | Estemd: A distributed processing framework for environmental monitoring based on apache kafka streaming engine | |
CN112906373A (zh) | 告警计算方法、装置、电子设备及存储介质 | |
Prakash et al. | Big data preprocessing for modern world: opportunities and challenges | |
CN113672668A (zh) | 大数据场景下的日志实时处理方法及装置 | |
Sarnovsky et al. | Data integration in scalable data analytics platform for process industries | |
CN116070171A (zh) | 一种孪生数据融合平台 | |
Wadhera et al. | A systematic Review of Big data tools and application for developments | |
CN114969083A (zh) | 一种实时数据分析方法及系统 | |
Iuhasz et al. | Monitoring of exascale data processing | |
CN117131059A (zh) | 报表数据处理方法、装置、设备及存储介质 | |
CN110928938A (zh) | 一种接口中间件系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |