一种监控数据实时存储方法、系统、电子设备及存储介质技术方案

技术编号:24120758 阅读:32 留言:0更新日期:2020-05-13 03:00
本发明专利技术提供一种监控数据实时存储方法、系统、电子设备及存储介质,该方法包括:通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列,Spark Streaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。通过该方案解决了的大规模监控数据查询分析效率低以及大规模监控数据存储写入热点的问题,基于HBase实现大批量数据的存储,同时设定不同数据分区提高数据查询效率,方便数据分析利用。

【技术实现步骤摘要】
一种监控数据实时存储方法、系统、电子设备及存储介质
本专利技术涉及大数据领域,尤其涉及一种监控数据实时存储方法、系统、电子设备及存储介质。
技术介绍
Zabbix为基于Web界面具有分布式系统监视及网络监视功能的监控工具,可以对服务器进行CPU、内存、网络、硬盘灯状况进行监控。一台监控设备(如服务器)存在多个监控指标,对每个监控指标会按固定周期采集数据,所以对于Zabbix监控而言产生的数据量非常庞大,无疑对数据存储分析提出了更高要求。通常使用MySQL存储监控数据的方案,难以满足大规模数据存储、分析的要求,而使用OpenTSDB等时序数据库,虽然可以满足大批量的数据存储要求,但时序数据库结构较为复杂,查询效率低,不便于数据分析使用。
技术实现思路
有鉴于此,本专利技术实施例提供了一种监控数据实时存储方法、系统、电子设备及存储介质,以解决的现有大规模数据存储方法数据查询效率低的问题。在本专利技术实施例的第一方面,提供了一种监控数据实时存储方法,包括:通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。在本专利技术实施例的第二方面,提供了一种监控数据实时存储系统,包括:接入模块,用于通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;存储模块,用于SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。在本专利技术实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本专利技术实施例第一方面所述方法的步骤。在本专利技术实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本专利技术实施例第一方面提供的所述方法的步骤。本专利技术实施例中,通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;存储模块,用于SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表,从而解决了现有大规模监控数据查询效率低的问题,实现数据高并发写入的同时提高数据读取能力,方便数据查询。基于HBase中数据分区,根据数据调用周期的不同,将不同时间段获取的数据存储到不同分区中,方便检索查询,提高数据读取性能,实现快速存取,为后续数据分析提供可靠依托,保障数据的实时处理。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获取其他附图。图1为本专利技术的一个实施例提供的监控数据实时存储方法的流程示意图;图2为本专利技术的一个实施例提供的监控数据实时存储系统的结构示意图;图3为本专利技术的一个实施例提供的监控数据实时存储系统的另一结构示意图。具体实施方式为使得本专利技术的专利技术目的、特征、优点能够更加的明显和易懂,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本专利技术一部分实施例,而非全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。本专利技术的说明书或权利要求书及上述附图中的术语“包括”以及其他相近意思表述,意指覆盖不排他的包含,如包含一系列步骤或单元的过程、方法或系统、设备没有限定于已列出的步骤或单元。请参阅图1,本专利技术实施例提供的一种监控数据实时存储方法的流程示意图,包括:S101、通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;所述Zabbix用于按固定周期采集监控数据,所述监控数据中以监控设备的监控指标不同,分为不同类别数据,如CPU监控数据、内存监控数据、网络监控数据等。Zabbix将采集到的监控数据(或监控指标数据)实时传送至kafka队列。所述Kafka是一种数据传输中间体,将接收到的数据放置于Topic中,Topic可以被多个消费者监听,每个消费者定时从Topic中获取数据,并记录读取位置。基于Kafka可以支持高并发、高吞吐量数据的实时处理。在所述监控项队列中,将监控数据以其监控的数据类别或监控项,推送至Kafka形成监控项队列,有SparkStreaming获取处理后进行存储。具体的,通过Zabbix采集服务器各项监控数据,在服务器端配置将监控数据实时存储到文件中;通过Filebeat将监控数据的文件实时推送至Kafka监控队列。S102、SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。所述SparkStreaming为一种实时的流数据处理引擎,可以按固定周期从Kafka的topic中获取数据,经处理后写入到HBase数据库,也可以回推至Kafka其他Topic。在一个实施例中,数据分区为根据调度周期设定的不同时长分段的存储表,所述存储表对应的HBaseRowkey由分区mod值、监控项ID和反转时间组成,其中,所述分区mod值为HBase节点数对监控项ID求模,所述反转时间为Int最大值减去当前时间。示例性的,在HBase的Rowkey中,各组成部分数据类型及长度为:其中,预分区mod值=监控项ID%HBase节点数。这样可以确保每一个监控项ID都在一个HBase节点上读写,方便对应的监控项ID连续高效的读取操作(命中单一节点,避免对节点数据合并影响读取效率)。同时,确保每个HBase节点都分担读写,多个节点可同时提供多个监控项的读写,弥补热点读写性能不足。其中,反转时间=Int最大值–当前日期,Int最大值表示为-yyyyMMddHH,而非传统Long最大值–1970到当前时间的偏移量。短时长的存储表可使用分秒存储值(如5秒),长时长的存储表可采用时分存储值(如15分钟)。基于以上Rowkey设计,可以减少对MemStore空间的占用,缓存更多Rowkey,同时,可实现数据高效查询。可选的,在每个存储表中至少设定4个列族,每个列族中分别存储监控项数据的最大值、最小值、平均值及中本文档来自技高网...

【技术保护点】
1.一种监控数据实时存储方法,其特征在于,包括:/n通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;/nSpark Streaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。/n

【技术特征摘要】
1.一种监控数据实时存储方法,其特征在于,包括:
通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列;
SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区,所述数据分区为根据调度周期设定的不同时长分段的存储表。


2.根据权利要求1所述的方法,其特征在于,所述通过Zabbix采集监控设备的监控数据,并将所述监控数据实时推送至Kafka监控项队列具体为:
通过Zabbix采集服务器各项监控数据,在服务器端配置将监控数据实时存储到文件中;
通过filebeat将监控数据的文件实时推送至Kafka监控队列。


3.根据权利要求1所述的方法,其特征在于,所述存储表对应的HBaseRowkey由分区mod值、监控项ID和反转时间组成,其中,所述分区mod值为HBase节点数对监控项ID求模,所述反转时间为Int最大值减去当前时间。


4.根据权利要求1所述的方法,其特征在于,所述数据分区为根据调度周期设定的不同时长分段的存储表还包括:
在每个存储表中至少设定4个列族,每个列族中分别存储监控项数据的最大值、最小值、平均值及中位数。


5.根据权利要求1所述的方法,其特征在于,所述SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区包括:
Kafka监控项队列对实时推送的监控数据进行缓存,当所述数据分区中最长时间分段存储表完成监控数据存储后,由Kafka按照监控项队列中的监听机制将缓存数据清除。


6.根据权利要求1所述的方法,其特征在于,所述SparkStreaming获取所述监控项队列数据并进行流处理后,存储至HBase预定数据分区还包括:
将监控设备的监控项告警规则存储在HBase中,从Kafka监控项队列中中获取监控项数据,根据所述告警规则判断所述监控项数据是否触发告警条件,并将触发告警条件的监控项数据推送至告警队列。


7.根据权利要求6所述的方法,其特征在于,所述根据所述告警规则判断所述监控项数据是否触发告警条件,将触发告警条件的监控项数据推送至告警队列包括:
按照告警规则中设定的预...

【专利技术属性】
技术研发人员:谢邵虎朱明杰
申请(专利权)人:武汉光谷信息技术股份有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1