一种信息监控方法及装置与流程

文档序号:12271171阅读:208来源:国知局
一种信息监控方法及装置与流程

本发明涉及计算机领域,尤其涉及一种信息监控方法及装置。



背景技术:

分布式系统是个由多个互相连接的处理资源组成的计算机系统,它们在整个系统的控制下协同执行同一个任务,最少依赖于集中的程序、数据或硬件。这些处理资源称为节点,所述节点可以是客户端,也可以是服务器。

分布式监控系统是对所述分布式系统中的各个节点进行监控的系统。所述分布式监控系统一般包括信息采集系统和信息分析系统。所述信息采集系统布置在各个节点中,用于对各个节点内部的方法之间的调用关系状态信息进行采集,并以日志的形式发送到信息分析系统中进行分析。所述采集所述调用关系的代码称为监控代码,所述节点内部的方法称为被监控代码。

传统的信息采集系统是将监控代码手动加入到节点的被监控代码中,当节点的被监控代码数量较多,和/或节点的数量较多时,这种方式显然效率非常低下。



技术实现要素:

为了解决现有技术中存在的技术问题,本发明提供了一种信息监控方法和装置,提高了监控代码的植入效率。

本发明实施例提供了一种信息监控方法,所述方法包括:

预先设置配置文件,所述配置文件中包括被监控代码的名称和路径;

根据所述被监控代码的名称和路径获取所述被监控代码,并将监控代码植入到所述被监控代码中;

若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息,实现对所述被监控代码的监控。

优选的,所述将监控代码植入到所述被监控代码中包括:

将监控代码的起始语句插到所述被监控代码的首句之前,将所述监控代码的结束语句插到所述被监控代码的尾句之后。

优选的,所述若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息包括:

若所述被监控代码被调用,则运行所述监控代码,以生成所述被监控代码的被调用信息。

优选的,所述被监控代码包括第一被监控代码和第二被监控代码;

所述若所述被监控代码被调用,则运行所述监控代码,以生成所述被监控代码的被调用信息包括:若所述第一被监控代码被执行,则运行所述第一被监控代码的监控代码,以生成所述第一被监控代码的监控日志,所述第一被监控代码的监控日志中包括所述第一被监控代码的唯一标识、所述第一被监控代码的起始执行时间和结束执行时间;

若所述第二被监控代码被所述第一被监控代码调用,则运行所述第二被监控代码的监控代码,以生成所述第二被监控代码的监控日志,所述第二被监控代码的监控日志中包括所述第二被监控代码的唯一标识、所述第二被监控代码的起始执行时间和结束执行时间以及所述第一被监控代码的唯一标识。

优选的,所述方法还包括:

根据所述第一被监控代码的监控日志和所述第二被监控代码的监控日志建立所述第一被监控代码和所述第二被监控代码之间的调用关系。

优选的,所述第一被监控代码和所述第二被监控代码在同一个被监控设备中或在不同的被监控设备中。

优选的,若所述第一被监控代码和所述第二被监控代码在同一个被监控设备中,则所述第一被监控代码和所述第二被监控代码在同一个线程执行;

所述第一被监控代码的监控日志和所述第二被监控代码的监控日志中还包括:与所述同一个线程对应的线程标识。

优选的,若所述第一被监控代码和所述第二被监控代码在不同的被监控设备中,则所述第一被监控代码和所述第二被监控代码在不同的线程中执行;

所述第一被监控代码的监控日志和所述第二被监控代码的监控日志中还包括:与所述不同的线程对应的相同的线程标识。

优选的,所述被监控代码的路径包括:

所述被监控代码的包路径和/或所述被监控代码的类路径。

本发明实施例还提供了一种信息监控装置,所述装置包括:配置文件设置单元、代码植入单元和被监控信息生成单元;

其中,所述配置文件设置单元,用于预先设置配置文件,所述配置文件中包括被监控代码的名称和路径;

所述代码植入单元,用于根据所述被监控代码的名称和路径获取所述被监控代码,并将监控代码植入到所述被监控代码中;

所述被监控信息生成单元,用于若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息,实现对所述被监控代码的监控。

相对于现有技术手动将监控代码一个一个植入到被监控代码中的方式,本实施例只要在配置文件中配置了被监控代码的名称和路径,就能实现自动将监控代码植入到所述被监控代码中的目的,提高监控代码的植入效率。

附图说明

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

图1为本发明提供的一种信息监控方法实施例一的流程图;

图2为本发明提供的一种信息监控装置实施例一的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

方法实施例一:

参见图1,该图为本发明提供的一种信息监控方法实施例一的流程图。

本实施例提供的信息监控方法包括如下步骤:

步骤S101:预先设置配置文件,所述配置文件中包括被监控代码的路径。

所述配置文件中设置有被监控代码的名称和路径,所述被监控代码的路径是指所述被监控代码在被监控系统中存放的地方。若所述被监控代码是由java程序写的,那么所述被监控代码的路径可以是所述被监控代码的包路径和/或所述被监控代码的类路径。

例如,所述配置文件中包括的被监控代码的类路径可以是:

regClazz=com.sohu.ott.api.service.AlbumService,com.sohu.ott.*

所述配置文件中包括的被监控代码名称可以为:

regMethod=com.sohu.ott.solr.provider.service.impl.SolrV3ServiceImpl.queryByAlbumId

步骤S102:根据所述被监控代码的名称和路径获取所述被监控代码,并将监控代码植入到所述被监控代码中。

在本实施例中,根据所述被监控代码的路径和名称就可以获取到所述被监控代码。当获取到所述被监控代码后,将监控代码自动植入到被监控代码中。

具体的,在实际应用中,所述监控代码可以具有起始语句和结束语句,即Start语句和end语句,那么在植入的过程中,可以将所述监控代码的起始语句插入到所述被监控代码的首句之前,将所述监控代码的结束语句插入到所述被监控代码的尾句之后,这样,所述监控代码就可以监控到所述被监控代码执行的全部状况。

相对于现有技术手动将监控代码一个一个植入到被监控代码中的方式,本实施例只要在配置文件中配置了被监控代码的名称和路径,就能实现自动将监控代码植入到所述被监控代码中的目的,提高监控代码的植入效率。

步骤S103:若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息,实现对所述被监控代码的监控。

在本实施例中,若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息。所述对所述被监控代码的被监控信息可以有很多种。例如,可以监控所述被监控代码是否成功执行;或者,可以通过监控所述被监控代码的起始执行时间和结束执行时间,得到二者之间的时间差,从而判断所述被监控代码是否出现执行超时情况;亦或者,还可以监控所述被监控代码在执行过程中出现的其他异常情况,例如网络异常,数据库异常,空指针异常,自定义异常等等。

当所述被监控代码为多个时,还可以通过所述监控代码监控所述被监控代码之间的相互调用关系。

具体的,假设所述被监控代码包括第一被监控代码和第二被监控代码。当所述第一被监控代码被执行时,运行所述第一被监控代码的监控代码,以生成所述第一被监控代码的监控日志,所述第一被监控代码的监控日志中包括所述第一被监控代码的唯一标识、所述第一被监控代码的起始执行时间和结束执行时间。

若所述第二被监控代码被所述第一被监控代码调用,则运行所述第二被监控代码的监控代码,以生成所述第二被监控代码的监控日志,所述第二被监控代码的监控日志中包括所述第二被监控代码的唯一标识、所述第二被监控代码的起始执行时间和结束执行时间以及所述第一被监控代码的唯一标识。

然后,可以根据所述第一被监控代码的监控日志和所述第二被监控代码的监控日志建立所述第一被监控代码和所述第二被监控代码之间的调用关系。

具体的,因为所述第一被监控代码调用了所述第二被监控代码,因此所述第一被监控代码的起始执行时间早于所述第二被监控代码的起始执行时间,且所述第一被监控代码的结束执行时间晚于所述第二被监控代码的结束执行时间。根据这个规律以及所述第二被监控代码的监控日志中存储的第一被监控代码的唯一标识,确定所述第二被监控代码被所述第一被监控代码调用的调用关系。

假设所述被监控代码还包括第三被监控代码,且所述第三被监控代码被所述第二被监控代码调用,则根据第二被监控代码的起始执行时间早于所述第三被监控代码的起始执行时间,且所述第二被监控代码的结束执行时间晚于所述第三被监控代码的结束执行时间的规律,以及所述第三被监控代码的监控日志中存储的第二被监控代码的唯一标识,确定所述第三被监控代码被所述第二被监控代码调用的调用关系。

以此类推。

在实际应用中,所述第一被监控代码和所述第二被监控代码可以在同一个被监控设备中,也可以在不同的被监控设备中。

若所述第一被监控代码和所述第二被监控代码在同一个被监控设备X中,且由于所述第二被监控代码被所述第一被监控代码所调用,则所述第一被监控代码和所述第二被监控代码可以在同一个线程执行,在该线程中,首先执行所述第一被监控代码,然后执行所述第二被监控代码。

一条调用链可以对应一个线程,所述调用链是指具有调用关系的各个被监控代码形成的链条。例如,在第一线程中,所述第一被监控代码在执行的过程中调用了所述第二被监控代码,所述第二被监控代码在执行的过程中调用了第三被监控代码,那么所述第一被监控代码、所述第二被监控代码和所述第三被监控代码形成一条调用链。

再例如,在第二线程中,所述第一被监控代码在执行的过程中先后调用了所述第二被监控代码和第四被监控代码,那么所述第一被监控代码、所述第二被监控代码和所述第四被监控代码形成一条调用链。

为了区分不同的调用链,每条调用链均分别对应一个自己的、独特的线程标识。所述线程标识可以由线程建立的第一个被监控代码对应的监控代码执行时生成。

例如,在上两个例子中,所述第一线程中第一个执行的被监控代码为所述第一被监控代码,那么可以由所述第一被监控代码对应的监控代码执行生成与所述第一线程对应的线程标识A。

除了在所述第一被监控代码的与所述第一线程对应的监控日志M1中存储有所述线程标识A,在所述第一被监控代码调用所述第二被监控代码,进而生成所述第二被监控代码的、与所述第一线程对应的监控日志N1时,可以将所述线程标识A存储在所述第二被监控对象的监控日志N1中。同理,所述第三被监控代码的监控日志中也可以存储有所述线程标识A。

所述第二线程中第一个执行的被监控代码也为所述第一被监控代码,那么可以由所述第一被监控代码对应的监控代码执行生成与所述第二线程对应的线程标识B。

除了在所述第一被监控代码的、与所述第二线程对应的监控日志M2中存储有所述线程标识B,在所述第一被监控代码调用所述第二被监控代码,进而生成所述第二被监控代码的、与所述第二线程对应的监控日志N2时,可以将所述线程标识B存储在所述第二被监控对象的监控日志N2中。同理,所述第四被监控代码的监控日志中也可以存储有所述线程标识B。

这样,在对所述被监控设备X的所有监控日志进行整理时,就可以根据所述线程标识进行分类,具有相同线程标识的监控日志为一类,然后再根据所述监控日志中记录的被监控代码的起始执行时间和结束执行时间形成所述调用链。

若所述第一被监控代码和所述第二被监控代码在不同的被监控设备中,则所述第一被监控代码和所述第二被监控代码在不同的线程中执行。为了获得所述第一被监控代码调用所述第二被监控代码的调用信息,可以通过同一个线程标识将所述第一被监控代码和所述第二被监控代码“串联”起来。

具体的,假设所述第一被监控代码在被监控设备Y1的线程执行,所述第二被监控代码在被监控设备Y2的线程执行。当所述第一被监控代码执行时,所述第一被监控代码的监控代码执行,生成所述第一被监控代码的唯一标识、所述被监控设备Y1的线程的线程标识C以及所述第一被监控代码的起始执行时间和结束执行时间。

当所述第一被监控代码在执行过程中需要调用第二被监控代码时,所述被监控设备Y1将所述第一被监控代码对应的线程标识C发送到所述被监控设备Y2,以使所述第二被监控代码在所述被监控设备Y2的线程中执行时,将所述线程标识C存储在所述第二被监控代码的监控日志中。所述第一被监控设备Y1和所述第二被监控设备Y2之间可以之间进行通讯,也可以借助于中间件进行通信。

这样,在对所述被监控设备Y1和Y2的所有监控日志进行整理时,就可以根据所述线程标识C将所述第一被监控代码和所述第二被监控代码关联起来,然后再根据所述第一被监控代码和所述第二被监控代码各自的监控日志中记录的起始执行时间和结束执行时间得到所述第一被监控代码调用所述第二被监控代码的调用链。

在被监控设备生成调用链之后,可以将所述调用链上传到数据分析设备,所述数据分析设备可以统计在一定时间段内相同调用链对应的请求产生的次数和/或每条调用链的平均执行时间,以进行进一步分析。

除了以调用链为维度进行统计,还可以以被监控代码为维度进行统计,即可以统计被监控代码被调用执行的次数、非被调用执行的次数等等。

基于以上实施例提供的一种信息监控方法,本发明实施例还提供了一种信息监控装置,下面结合附图来详细说明其工作原理。

装置实施例一

参见图2,该图为本发明提供的一种信息监控装置实施例一的结构框图。

本实施例提供的信息监控装置包括:

配置文件设置单元101、代码植入单元102和被监控信息生成单元103;

其中,所述配置文件设置单元101,用于预先设置配置文件,所述配置文件中包括被监控代码的名称和路径;

所述代码植入单元102,用于根据所述被监控代码的名称和路径获取所述被监控代码,并将监控代码植入到所述被监控代码中;

所述被监控信息生成单元103,用于若所述被监控代码被执行,则运行所述监控代码,以生成所述被监控代码的被监控信息,实现对所述被监控代码的监控。

相对于现有技术手动将监控代码一个一个植入到被监控代码中的方式,本实施例只要在配置文件中配置了被监控代码的名称和路径,就能实现自动将监控代码植入到所述被监控代码中的目的,提高监控代码的植入效率。

可选的,所述代码植入单元102,具体用于将监控代码的起始语句插到所述被监控代码的首句之前,将所述监控代码的结束语句插到所述被监控代码的尾句之后。

可选的,所述被监控信息生成单元103,具体用于若所述被监控代码被调用,则运行所述监控代码,以生成所述被监控代码的被调用信息。

可选的,所述被监控代码包括第一被监控代码和第二被监控代码;

所述若所述被监控代码被调用,则所述被监控信息生成单元103,具体用于:

若所述第一被监控代码被执行,则运行所述第一被监控代码的监控代码,以生成所述第一被监控代码的监控日志,所述第一被监控代码的监控日志中包括所述第一被监控代码的唯一标识、所述第一被监控代码的起始执行时间和结束执行时间;

若所述第二被监控代码被所述第一被监控代码调用,则运行所述第二被监控代码的监控代码,以生成所述第二被监控代码的监控日志,所述第二被监控代码的监控日志中包括所述第二被监控代码的唯一标识、所述第二被监控代码的起始执行时间和结束执行时间以及所述第一被监控代码的唯一标识。

可选的,所述装置还包括:调用关系建立单元,用于根据所述第一被监控代码的监控日志和所述第二被监控代码的监控日志建立所述第一被监控代码和所述第二被监控代码之间的调用关系。

可选的,所述第一被监控代码和所述第二被监控代码在同一个被监控设备中或在不同的被监控设备中。

可选的,若所述第一被监控代码和所述第二被监控代码在同一个被监控设备中,则所述第一被监控代码和所述第二被监控代码在同一个线程执行;

所述第一被监控代码的监控日志和所述第二被监控代码的监控日志中还包括:与所述同一个线程对应的线程标识。

可选的,若所述第一被监控代码和所述第二被监控代码在不同的被监控设备中,则所述第一被监控代码的监控日志和所述第二被监控代码的监控日志中还包括:全局标识。

可选的,所述被监控代码的路径包括:

所述被监控代码的包路径和/或所述被监控代码的类路径。

当介绍本发明的各种实施例的元件时,冠词“一”、“一个”、“这个”和“所述”都意图表示有一个或多个元件。词语“包括”、“包含”和“具有”都是包括性的并意味着除了列出的元件之外,还可以有其它元件。

需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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