数据采集装置以及方法与流程

文档序号:18822469发布日期:2019-10-09 01:00阅读:201来源:国知局
数据采集装置以及方法与流程

本发明涉及互联网技术领域,具体来说,涉及一种数据采集装置以及数据采集方法。



背景技术:

针对应用代码在线上环境中运行时的系统数据采集工作,现有的数据采集方法包括以下的埋点采集(无埋点,web埋点,应用嵌入埋点)、日志采集、和变量跟踪三种方法:

一、埋点采集

埋点采集方法是通过前端xpath(xml路径语言,一种用来确定xml文档中某部分位置的语言)标记、页面埋点、应用嵌入埋点,进而采集用户交互的行为动作,统计后台暴露接口的访问次数、频率等信息。

但是,这种方法存在以下问题:1)工作量巨大:为确保采集数据全面有效,需对所有用户交互的动作进行埋点或标记,产生了极大的工作量。2)采集覆盖面小:仅能针对于暴露于前端的接口(方法),无法针对服务器系统中所有的方法。3)数据统计困难:由于不同的业务场景,导致采集到数据格式很难做到完全统一,对于后期的数据分析工作无疑加大了难度。

二、日志采集

是指在关键方法或执行代码上打印相关日志,通过统计日志信息采集对应方法的执行次数、频率等信息,从而达到热点代码统计的作用。

但是,这种方法存在以下问题:1)侵入性强:此方案需要选定监测代码,在其执行过程前后加入统计代码,这样会破坏原本方法流程,具有很强侵入性,虽对新构建系统无影响,但是不便于已有系统的集成。2)采集覆盖面小:此方案需选定特定代码进行监测,出于性能考虑,无法针对所有方法进行监测,所以覆盖面仅能覆盖到选定的代码。3)可维护性差:由于针对于每个选定特定的代码均需添加统计代码,所以会产生多种重复的统计代码,在业务的不断更迭上,很难保障统计代码同步发生变化。故而可维护性较差。

三、变量跟踪

申请号为200810088906.8的专利中提出了一种代码审计的方法及装置:在源代码中追踪一个变量,得到处理该变量的各处理节点;使用发现单元来获取各个节点具体属性,依据采集到数据进行分析比较,从而起到监测安全属性的作用。

但是,这种方法存在以下问题:1)采集覆盖面小:通过追踪一个变量的轨迹得到处理该变量各个处理节点的属性,覆盖面仅局限在此变量存在的方法,无法覆盖所有的有效代码。2)无法统计变量未流经节点:此方案可以统计业务调用的代码,但无法统计系统没有执行到的代码。而往往定位出热点代码可以以提高性能,而定位出冷藏代码可以提高健壮性。3)无法跨应用采集:由于变量存在同一进程的内存,无法跨应用实例采集相同的方法的数据,从而统计结果的价值降低。



技术实现要素:

针对相关技术中的上述问题,本发明提出一种数据采集装置以及数据采集方法,针对应用代码在线上环境中运行时的数据采集工作,提供一种具有普适性的无侵入标记采集的方法。

本发明的技术方案是这样实现的:

根据本发明的一个方面,提供了一种数据采集装置,用于在应用运行时进行数据采集,该数据采集装置包括:

采集模块,用于采用特有标记方式对多个应用中的多个待监测方法进行标记,并用于根据标记对各个待监测方法进行信息采集,其中,特有标记是对代码逻辑无侵入性的标记方式;

传输模块,连接于采集模块和汇聚模块,用于将采集的信息上传至汇聚模块;

汇聚模块,用于将采集的信息存储于汇聚模块。

根据本发明的实施例,采集模块包括:感知处理器,用于进行信息采集,其中,当待监测方法被调用时,根据标记触发相应的感知处理器;

根据本发明的实施例,特有标记包括分组标记和功能标记之中的至少一种。

根据本发明的实施例,传输模块包括:权重配置子模块,用于根据多个应用节点的性能为多个应用分配相应的权重。

根据本发明的实施例,汇聚模块包括:融合子模块,用于将采集的信息进行数据融合;解析子模块,用于对融合后的信息进行解析;存储子模块,用于根据数据融合的结果将解析后的信息分配至多个结果集中进行存储。

根据本发明的实施例,传输模块还用于将采集的信息存储在相应的应用节点中。

根据本发明的另一方面,提供了一种数据采集方法,用于在应用运行时进行数据采集,该数据采集方法包括:

采用特有标记方式对多个应用中的多个待监测方法进行标记,其中,特有标记是对代码逻辑无侵入性的标记方式;

根据标记对各个待监测方法进行信息采集;

将采集的信息上传至汇聚模块并将采集的信息存储于汇聚模块。

根据本发明的实施例,根据标记对待监测方法进行信息采集包括:当待监测方法被调用时,根据标记触发相应的感知处理器;采用相应的感知处理器进行信息采集。

根据本发明的实施例,将采集的信息上传至汇聚模块包括:当启动应用时,与汇聚模块建立连接并进行权重配置,其中,根据多个应用节点的性能为多个应用分配相应的权重。

根据本发明的实施例,将采集的信息存储于汇聚模块包括:将采集的信息进行数据融合;对融合后的信息进行解析;根据数据融合的结果将解析后的信息分配至多个结果集中进行存储。

本发明上述技术方案的有益效果在于:

1)有效覆盖面广:可以标记所有需要统计的代码,在保障针对性采集的前提上,极大的加强了有效统计的覆盖面。

2)采集规则多样化:具体采集规则可以通过不同注解进行添加标注,也可以自行定义采集规则注解,具备高度可扩展性。

3)跨应用节点采集;分层设计,可以保障多个应用信息汇总分析,而不再局限至单个应用,同时可以采集到一个相同应用的多个实例上数据进行汇总。

4)无侵入标记设计:采用注解标记方式进行标记覆盖,在不改动方法内部逻辑代码的前提下实现方法调用信息采集。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的数据采集装置的框图示意图;

图2是根据本发明具体实施例的数据采集装置的框图示意图;

图3是根据本发明具体实施例的标记注解的示意图;

图4是根据本发明实施例的标记感知处理器的示意图;

图5是根据本发明实施例的信息采集执行切入点的示意图;

图6是根据本发明实施例的信息传递汇聚的示意图;

图7是根据本发明实施例的信息汇聚及数据整理分派的示意图;

图8是根据本发明实施例的数据采集方法的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,根据本发明的实施例提供了一种数据采集装置,用于在应用运行时进行数据采集,该数据采集装置包括采集模块10、传输模块20和汇聚模块30,其中,采集模块10用于采用特有标记方式对多个应用中的多个待监测方法进行标记并用于根据标记对各个待监测方法进行信息采集,其中,特有标记是对代码逻辑无侵入性的标记方式;传输模块20连接于采集模块10和汇聚模块30,传输模块20用于将采集的信息上传至汇聚模块30;汇聚模块30用于将采集的信息存储于汇聚模块30。

本发明的上述技术方案,通过采用注解标记方式进行标记覆盖的无侵入标记设计,在不改动方法内部逻辑代码的前提下实现方法调用信息采集。可以标记所有需要统计的代码,在保障针对性采集的前提上,极大的加强了有效统计的覆盖面。具体采集规则可以通过不同注解进行添加标注,也可以自行定义采集规则注解,具备高度可扩展性。跨应用节点采集,可以保障多个应用信息汇总分析,而不再局限至单个应用,同时可以采集到一个相同应用的多个实例上数据进行汇总。

在一个具体的实施例中,如图2所示,其中采集模块10可作为依赖集成进需要采集信息的应用本身,采集并上传被标记的待监测方法数据;传输模块20可采用预置权重比,例如以类rnn结构将信息分别传输汇聚至自身的应用节点50及其上级的汇聚节点40;汇聚模块30进行数据融合,分派存储,将采集到数据信息同实例融合后存储至对应采集规则的汇总结果集。

在一个实施例中,采集模块10可以包括感知处理器,感知处理器用于进行信息采集。具体的,采集模块10属于整个系统信息采集部分,其充当着代码感知的作用。可通过如下步骤进行实现:

步骤s11,通过本提案设立的特有标记,对应用内部需要监测代码的具体方法进行标记。

步骤s12,应用启动时,基于配置扫描注入被标记的方法。

步骤s13,初始化执行处理器以及本地信息存储空间。

步骤s14,标记方法执行时,触发相应感知处理器采集信息。

下面结合具体实施例对本发明的标记部分、初始化部分、采集执行部分、传输部分、汇聚部分、存储部分等进行说明。

关于特有标记,在一个实施例中,特有标记为一套标记注解,依据标记方式可分为两类标记注解:组标记与功能标记。组标记主要针对大量同类方法统计时进行标记,简化标记操作,达到进一步减少标记工作量的目的。功能标记主要应用于单独方法进行标记。注解标记可包括例如方法平均耗时、方法最大耗时、方法计数、异常计数、内存占用等的多种监测指标数据采集,且可以用户自定义扩展实现。应当理解,本发明的特有标记并不限于注解标记,也可以采用任何适当的其它标记方式。

参考图3所示,示出了组标记与功能标记两种标记的主要区别。统计目标取决于name,name配置相同的方法会合并并统计,以计数为类。参见图3,方法b1和方法b2中的任意一者被调用即进行计次,最终对应至name值为b2的数据项。分组标记,通过groupconfig注解进行分组配置声明,然后通过group注解,可注入配置中配置的统计注解,进一步加强代码可读性。

关于初始化部分,针对不同功能的标注采用不同的感知处理器(例如,计数感知处理器、耗时感知处理器、内存感知处理器、和自定义感知处理器)进行信息采集,其具体结构参考图4所示。感知处理器内部会有独立的信息采集空间,在应用启动时通过对标注方法扫描,构建处理器并初始化其信息采集空间的数据。

关于采集执行部分,参考图5所示,方法被调用时候会触发相应标注的感知处理器,而其依据采集信息在方法调用前后进行信息采集操作。

传输模块属于整个系统信息传输部分,其充当对采集到的信息传输的作用。应用主要由汇聚节点与应用采集子节点构成,可具体通过以下步骤来实现:

步骤s21,应用节点启动时,在汇聚节点建立连接,并注册权重配置信息。

步骤s22,应用监测方法被调用时,触发其感知处理模块,采集信息后将信息分别传输至上级汇聚节点与应用节点本身。

在一些实施例中,传输模块可以包括权重配置子模块,权重配置子模块用于根据多个应用节点的性能为多个应用分配相应的权重。这样,关于注册部分,不同的应用节点有自己不同的权重配置,可以根据流量,机器性能等通过专家调查权重法分配权重,保障了应用监测数据统计结果的精确度。

参考图6所示,关于传输部分,传输模块20还用于将采集的信息存储在相应的应用节点50中。统计结果将进行前向传播与反向传播两部分,前向传播是将采集信息传播至上层的汇聚节点40,以供规则统计模块进行规则统计应用整体信息。反向传播是将采集信息传播至应用自身维护存储结果集,以供统计单节点信息以及自身应用节点50的自反馈调节。

在一个实施例中,汇聚模块可以包括融合子模块、解析子模块、和存储子模块,融合子模块用于将采集的信息进行数据融合,解析子模块用于对融合后的信息进行解析,存储子模块用于根据数据融合的结果将解析后的信息分配至多个结果集中进行存储。

具体来说,汇聚模块属于整个系统信息解析部分,其充当对监测信息的分类解析汇总处理等作用,结合图7所示,可具体通过如下步骤来实现:

步骤s31,汇聚节点采集到数据后,进行数据融合,同应用不同实例间同标注信息依据合并融合。

步骤s32,数据整理分派,数据经过融合后,将其解析分派至不同的存储器进行存储。

步骤s33,数据存储。将解析后数据存储至对应的结果集(例如,耗时结果集、次数结果集、异常结果集、内存结果集、线程结果集和gc结果集)中。

关于汇聚部分,采集到各个应用节点之后的信息,将其进行初步的数据分类存储,存储在对应的最终结果集。

关于存储部分,在启动过程中,通过配置初始化数据存储处理器、解析器以及其结果集等存储空间。接到分派过来的数据时,进行数据提取、解析、分权汇总、结果存储等多个操作。

如图8所示,根据本发明的实施例,还提供了一种数据采集方法,用于在应用运行时进行数据采集,该数据采集方法包括以下步骤:

s802,采用特有记方式对多个应用中的多个待监测方法进行标记,其中,特有标记是对代码逻辑无侵入性的标记方式;

s804,根据标记对各个待监测方法进行信息采集;

s806,将采集的信息上传至汇聚模块并将采集的信息存储于汇聚模块。

在一个实施例中,在步骤s804处,根据标记对待监测方法进行信息采集可以具体包括:

s8041,当待监测方法被调用时,根据标记触发相应的感知处理器;

s8042,采用相应的感知处理器进行信息采集。

在一个实施例中,在步骤s806处,将采集的信息上传至汇聚模块可以具体包括:当启动应用时,与汇聚模块建立连接并进行权重配置,其中,根据多个应用节点的性能为多个应用分配相应的权重。

在一个实施例中,在步骤s806处,将采集的信息存储于汇聚模块可以具体包括:

s8061,将采集的信息进行数据融合;

s8062,对融合后的信息进行解析;

s8063,根据数据融合的结果将解析后的信息分配至多个结果集中进行存储。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1