本发明涉及大数据计算,尤其涉及一种监控数据预计算方法、装置、电子设备及存储介质。
背景技术:
1、在当前大规模复杂的分布式系统的监控使用过程中,一般需要对生产环境诸多的监控指标进行观测、分析以及告警。而随着对系统分析的深入,需要解决更复杂的问题的观测以及解决日常运维的报警风暴的问题,解决这类问题通常需要对于原始监控数据进行二次计算从而进一步分析。针对这类二次计算需求,业界主要的解决方案如下:
2、1.当前业界最流行的监控系统普罗米修斯,针对这一需求,建立了promql标准,用户可以通过编写promql语句,来实现监控数据的二次计算,从而得到所需要的进阶数据。
3、2.用户提前定义好可能用到的二次计算公式,建立一套流式计算系统,当指标输入时即进行准实时的计算,并将计算结果写入监控时序数据库。这样当使用这些数据时,只需在时序数据库中提取该数据即可,可解决时序数据库的瓶颈问题。
4、尽管以上方案可以一定程度解决监控二次计算的问题,但以上方案都存在不同程度的缺陷。对于方案1,由于这些计算操作需要实时计算,会给监控系统尤其是时序数据库带来巨大的计算压力,非常容易达到性能瓶颈,因而难以直接用到大规模、复杂的系统上。对于方案2,虽然解决了性能瓶颈问题,但需要提前定义二次计算公式并建立相应的流式计算系统,存在较高的建设及维护成本。
技术实现思路
1、有鉴于此,本发明实施例提供了一种监控数据预计算方法、装置、电子设备及存储介质,以提高监控数据预计算效率。
2、根据本发明的一方面,提供了一种监控数据预计算方法,所述方法包括:
3、接收监控数据计算请求,所述监控数据计算请求中包括待计算的目标监控数据以及目标计算规则;
4、在所述目标计算规则属于预设计算规则的情况下,基于所述目标监控数据从时序数据库中获取对应的预计算结果并返回;其中,所述预计算结果为预先对所述目标监控数据按照所述目标计算规则进行预计算得到的结果;
5、在所述目标计算规则不属于预设计算规则的情况下,从所述时序数据库中获取所述目标监控数据,并按照所述目标计算规则对所述目标监控数据进行实时计算,获取实时计算结果并返回。
6、在一种可能的实施例中,所述方法还包括:在所述目标计算规则不属于所述预设计算规则的情况下,确定所述目标计算规则的时间频率;
7、在所述目标计算规则的时间频率超过预设时间频率阈值的情况下,将所述目标计算规则计入所述预设计算规则。
8、在一种可能的实施例中,预先针对多个时刻设置对应布隆过滤器,所述布隆过滤器用于存储对应时刻接收的计算规则;
9、所述确定所述目标计算规则的时间频率,包括:
10、基于接收所述监控数据计算请求的目标时刻,将所述目标计算规则存储至针对所述目标时刻预设的布隆过滤器中;
11、在所有布隆过滤器中,删除最早的时刻对应的布隆过滤器,得到更新后布隆过滤器;
12、基于所述目标计算规则在所述更新后布隆过滤器中的位置,确定所述目标计算规则的累计值;
13、所述在所述目标计算规则的时间频率超过预设时间频率阈值的情况下,将所述目标计算规则计入所述预设计算规则,包括:
14、在所述目标计算规则的累计值超过预设累计值阈值的情况下,将所述目标计算规则计入所述预设计算规则。
15、在一种可能的实施例中,所述将所述目标计算规则计入所述预设计算规则,包括:
16、将所述目标计算规则标识作为主键,将所述目标计算规则包括的监控数据作为值与所述目标计算规则对应存储至预设计算规则数据库,并将接收所述监控数据计算请求的时间作为所述目标计算规则的更新时间与所述目标计算规则对应存储;
17、将所述目标计算规则中包含的各个监控数据分别作为主键,将所述目标计算规则作为值与各个所述监控数据对应存储至预设计算规则数据库。
18、在一种可能的实施例中,所述方法还包括:
19、在所述目标计算规则不属于所述预设计算规则的情况下,计算所述目标计算规则的复杂度;
20、在所述目标计算规则的复杂度高于预设复杂度阈值的情况下,确定所述目标计算规则的时间频率。
21、在一种可能的实施例中,所述方法还包括:
22、在所述目标计算规则属于所述预设计算规则的情况下,将接收所述监控数据计算请求的时间作为所述目标计算规则的更新时间;
23、定期对预设计算规则进行遍历,获取各所述预设计算规则的更新时间;
24、将更新时间超过预设更新时间阈值的计算规则从所述预设计算规则中删除。
25、在一种可能的实施例中,所述方法还包括:
26、接收到时序数据库写入请求,所述时序数据库写入请求中包括待写入的候选监控数据;
27、基于所述预设计算规则数据库,确定是否存在与所述候选监控数据对应的预设计算规则;
28、在存在与所述候选监控数据对应的预设计算规则的情况下,将所述候选监控数据同时写入至时序数据库以及预计算缓存;
29、针对所述预计算缓存中的候选监控数据,按照所述候选监控数据对应的预设计算规则对所述候选监控数据进行计算,并将计算结果存储至所述时序数据库。
30、根据本发明的另一方面,提供了一种监控数据预计算装置,所述装置包括:
31、第一接收模块,用于接收监控数据计算请求,所述监控数据计算请求中包括待计算的目标监控数据以及目标计算规则;
32、第一获取模块,用于在所述目标计算规则属于预设计算规则的情况下,基于所述目标监控数据从时序数据库中获取对应的预计算结果并返回;其中,所述预计算结果为预先对所述目标监控数据按照所述目标计算规则进行预计算得到的结果;
33、第二获取模块,用于在所述目标计算规则不属于预设计算规则的情况下,从所述时序数据库中获取所述目标监控数据,并按照所述目标计算规则对所述目标监控数据进行实时计算,获取实时计算结果并返回。
34、在一种可能的实施例中,所述装置还包括:
35、预计算分析模块,用于在所述目标计算规则不属于所述预设计算规则的情况下,确定所述目标计算规则的时间频率;在所述目标计算规则的时间频率超过预设时间频率阈值的情况下,将所述目标计算规则计入所述预设计算规则。
36、在一种可能的实施例中,预先针对多个时刻设置对应布隆过滤器,所述布隆过滤器用于存储对应时刻接收的计算规则;
37、所述确定所述目标计算规则的时间频率,包括:
38、基于接收所述监控数据计算请求的目标时刻,将所述目标计算规则存储至针对所述目标时刻预设的布隆过滤器中;
39、在所有布隆过滤器中,删除最早的时刻对应的布隆过滤器,得到更新后布隆过滤器;
40、基于所述目标计算规则在所述更新后布隆过滤器中的位置,确定所述目标计算规则的累计值;
41、所述在所述目标计算规则的时间频率超过预设时间频率阈值的情况下,将所述目标计算规则计入所述预设计算规则,包括:
42、在所述目标计算规则的累计值超过预设累计值阈值的情况下,将所述目标计算规则计入所述预设计算规则。
43、在一种可能的实施例中,所述将所述目标计算规则计入所述预设计算规则,包括:
44、将所述目标计算规则标识作为主键,将所述目标计算规则包括的监控数据作为值与所述目标计算规则对应存储至预设计算规则数据库,并将接收所述监控数据计算请求的时间作为所述目标计算规则的更新时间与所述目标计算规则对应存储;
45、将所述目标计算规则中包含的各个监控数据分别作为主键,将所述目标计算规则作为值与各个所述监控数据对应存储至预设计算规则数据库。
46、在一种可能的实施例中,所述预计算分析模块,用于在所述目标计算规则不属于所述预设计算规则的情况下,计算所述目标计算规则的复杂度;在所述目标计算规则的复杂度高于预设复杂度阈值的情况下,确定所述目标计算规则的时间频率。
47、在一种可能的实施例中,所述装置还包括:
48、更新模块,用于在所述目标计算规则属于所述预设计算规则的情况下,将接收所述监控数据计算请求的时间作为所述目标计算规则的更新时间;定期对预设计算规则进行遍历,获取各所述预设计算规则的更新时间;将更新时间超过预设更新时间阈值的计算规则从所述预设计算规则中删除。
49、在一种可能的实施例中,所述装置还包括:
50、第二接收模块,用于接收到时序数据库写入请求,所述时序数据库写入请求中包括待写入的候选监控数据;
51、确定模块,用于基于所述预设计算规则数据库,确定是否存在与所述候选监控数据对应的预设计算规则;
52、存储模块,用于在存在与所述候选监控数据对应的预设计算规则的情况下,将所述候选监控数据同时写入至时序数据库以及预计算缓存;
53、预计算模块,用于针对所述预计算缓存中的候选监控数据,按照所述候选监控数据对应的预设计算规则对所述候选监控数据进行计算,并将计算结果存储至所述时序数据库。
54、根据本发明的另一方面,提供了一种电子设备,包括:
55、处理器;以及
56、存储程序的存储器,
57、其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行任一所述的监控数据预计算方法。
58、根据本发明的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行任一所述的监控数据预计算方法。
59、本发明实施例中提供的一个或多个技术方案,通过预先针对预设计算规则进行监控数据预计算,并将预计算结果与监控数据一同存储在时序数据库中,在监控数据计算请求命中预设计算规则的情况下,可以直接从时序数据库中获取预计算结果返回,无需对这些监控数据再进行实时计算,提高监控数据计算效率,同时降低机器资源开销。再有本发明实施例仅需设置并维护预设计算规则,建设以及维护的成本均较低。