CN110083391A - 调用请求监控方法、装置、设备及存储介质 - Google Patents
调用请求监控方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110083391A CN110083391A CN201910206045.7A CN201910206045A CN110083391A CN 110083391 A CN110083391 A CN 110083391A CN 201910206045 A CN201910206045 A CN 201910206045A CN 110083391 A CN110083391 A CN 110083391A
- Authority
- CN
- China
- Prior art keywords
- request
- call request
- mark
- class object
- interface call
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3428—Benchmarking
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及安全监控,公开一种调用请求监控方法、装置、设备及存储介质,该方法包括:在检测到应用服务发起的接口调用请求时,获取接口调用请求对应的类对象;检测类对象是否为预设拦截对象,若是则对类对象进行字节码增强,并通过字节码增强后的类对象对接口调用请求进行拦截;然后按预设标识生成规则生成接口调用请求对应的请求标识,再根据请求标识对接口调用请求进行标记,并对标记后的接口调用请求进行转发,由于是对请求对应的类对象进行拦截检测,在需要对其拦截时对类对象进行类增强,然后通过增强后的类对象对请求进行拦截并标记相应的请求标识,从而能够实现对调用请求的全面监控,降低了请求监控实现过程中的开发难度和性能耗费。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种调用请求监控方法、装置、设备及存储介质。
背景技术
目前,市面上有很多针对分布式服务请求调用链路进行监控的系统,如大众点评cat、pinpoint、推特(twitter)的zipkin等,而这些系统主要存在以下不足:
1.大众点评cat:环境搭建繁杂,很多配置写死,不灵活;集成方案是通过代码埋点的方式来实现监控,对代码的侵入性大,集成成本较高,风险较大;
2.韩国开源的pinpoint:不支持查询单个调用链,对外表现的是整个应用的调用生态,二次开发难度较高;
3.twitter的zipkin:目前只对spring cloud体系结合良好,缺乏对springboot和tomcat的web服务支持;默认使用的是超文本传输协议(http)请求向zipkin上报信息,性能耗费较大。
因此,如何简单有效的实现对调用请求进行监控,降低请求监控实现过程中的开发难度和性能耗费,就成为一个亟待解决的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供了一种调用请求监控方法、装置、设备及存储介质,旨在解决现有技术无法简单有效的实现对调用请求进行监控,导致请求监控现实过程开发难度大和性能耗费高的技术问题。
为实现上述目的,本发明提供了一种调用请求监控方法,所述方法包括以下步骤:
在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
优选地,所述检测所述类对象是否为预设拦截对象的步骤,包括:
获取所述类对象对应的目标对象标识;
读取预先配置的拦截对象集,所述拦截对象集中包含若干个待拦截类对象对应的拦截对象标识;
检测所述目标对象标识是否属于所述拦截对象标识。
优选地,所述对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截的步骤,包括:
调用预置字节码增强插件对所述类对象中的Java类进行二进制修改,并对修改后的类对象进行拦截器添加,以获取字节码增强后的类对象;
根据字节码增强后的类对象对所述接口调用请求进行方法切面拦截。
优选地,所述对标记后的接口调用请求进行转发的步骤之后,所述方法还包括:
在所述应用服务的存储空间中查找所述接口调用请求对应的日志文件,并根据所述请求标识对所述日志文件进行标记;
调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存。
优选地,所述调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存的步骤之后,所述方法还包括:
在接收到调用链路查看指令时,提取所述调用链路查看指令中包含的目标请求标识;
根据所述目标请求标识从所述分布式消息系统中读取对应的请求日志文件,并读取所述日志文件中包含的时间日期参数;
根据所述时间日期参数对所述请求日志文件进行排序,并对排序后的请求日志文件进行展示。
优选地,所述按预设标识生成规则生成所述接口调用请求对应的请求标识的步骤,包括:
获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的互联网协议地址;
从所述互联网协议地址中选取预设位数的字符,对所述字符和所述媒体访问控制地址进行组合,并将组合结果作为所述接口调用请求对应的请求标识。
优选地,所述按预设标识生成规则生成所述接口调用请求对应的请求标识的步骤,还包括:
获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的请求发起时间;
对所述请求发起时间进行时间格式转换,获取对应的时间戳;
对所述媒体访问控制地址和所述时间戳进行组合以获取组合字符,将所述组合字符输入至预设散列函数,并将获取到的函数输出结果作为所述接口调用请求对应的请求标识。
此外,为实现上述目的,本发明还提出一种请求调用链路监控装置,所述装置包括:
对象获取模块,用于在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
请求拦截模块,用于检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
请求标记模块,用于按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
此外,为实现上述目的,本发明还提出一种调用请求监控设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的调用请求监控程序,所述调用请求监控程序配置为实现如上文所述的调用请求监控方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有调用请求监控程序,所述调用请求监控程序被处理器执行时实现如上文所述的调用请求监控方法的步骤。
本发明通过在检测到应用服务发起的接口调用请求时,获取接口调用请求对应的类对象;检测所述类对象是否为预设拦截对象,若是则对类对象进行字节码增强,并通过字节码增强后的类对象对接口调用请求进行拦截;然后按预设标识生成规则生成接口调用请求对应的请求标识,再根据请求标识对接口调用请求进行标记,并对标记后的接口调用请求进行转发,由于是对请求对应的类对象进行拦截检测,在需要对其拦截时对类对象进行类增强,然后通过增强后的类对象对请求进行拦截并标记相应的请求标识,从而能够实现对调用请求的全面监控,降低了请求监控实现过程中的开发难度和性能耗费。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的调用请求监控设备的结构示意图;
图2为本发明调用请求监控方法第一实施例的流程示意图;
图3为本发明调用请求监控方法第二实施例的流程示意图;
图4为本发明调用请求监控方法第三实施例的流程示意图;
图5为本发明调用请求监控装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的调用请求监控设备结构示意图。
如图1所示,该调用请求监控设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对调用请求监控设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及调用请求监控程序。
在图1所示的调用请求监控设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明调用请求监控设备中的处理器1001、存储器1005可以设置在调用请求监控设备中,所述调用请求监控设备通过处理器1001调用存储器1005中存储的调用请求监控程序,并执行本发明实施例提供的调用请求监控方法。
本发明实施例提供了一种调用请求监控方法,参照图2,图2为本发明调用请求监控方法第一实施例的流程示意图。
本实施例中,所述调用请求监控方法包括以下步骤:
步骤S10:在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
需要说明的是,本发明方法的执行主体可以是应用性能管理(ApplicationPerformance Management&Monitoring,APM)平台,该平台主要对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化提供一种解决方案。所述类对象可以是类的方法,所谓类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础,每个类包含数据说明和一组操作数据或传递消息的函数(或方法),类的实例称为对象,本实施例及下述各实施例中所述类对象即所述接口调用请求需要调用的函数(方法)。
应理解的是,所述应用服务既可以是调用请求的接收方也可以是调用请求的发起方,例如应用服务a需要调用应用服务b的接口,而应用服务b在对应用服务a的调用请求进行响应时又需要调用应用服务c,那么应用服务b则既是调用请求的接收方也是调用请求的发起方。本实施例中所述应用服务需要预先接入所述APM平台,所述应用服务可以是客户端也可以是服务端,其类别可根据具体应用场景确定。
在具体实现中,APM平台在检测到已接入的某一应用服务向另一应用服务发起接口调用请求时可先对该接口调用请求进行解析,然后根据解析结果获取该请求对应的类对象。
步骤S20:检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
需要说明的是,本步骤中对请求进行拦截是基于JavaAgent机制的Java探针原理,通常情况下Java探针能够实现特定代码的抓取、函数(或方法)执行耗时范围抓取、函数(或方法)调用监控等操作。
应理解的是,所述预设拦截对象可以是预先设定的需要对其执行方法切面拦截的各种类的方法。为了实现对所述类对象的快速检测,研发人员可预先将需要进行方法切面拦截的拦截对象对应的对象标识提取出来存放至一个特定的拦截对象集中,以便于APM平台在检测类对象是否需要被拦截时,依据该拦截对象集进行快速检测。具体的,本实施例中APM平台可通过获取所述类对象对应的目标对象标识;然后读取预先配置的拦截对象集,所述拦截对象集中包含若干个待拦截类对象对应的拦截对象标识;并检测所述目标对象标识是否属于所述拦截对象标识。
进一步地,考虑到请求拦截过程中涉及到的代码程序较多,为了减少冗余代码、提高APM的拦截性能,本实施例中APM平台可调用预先配置的字节码增强插件“byte-buddy”对所述类对象进行二进制修改,然后给修改后的类对象进行拦截器添加并定义方法切面,以获得增强后的类对象,具体的,APM平台可调用预置字节码增强插件对所述类对象中的Java类进行二进制修改,并对修改后的类对象进行拦截器添加,以获取字节码增强后的类对象。然后根据字节码增强后的类对象对所述接口调用请求进行方法切面拦截。
步骤S30:按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
应理解的是,所述请求标识可以是能够将不同调用请求进行区分的标识码或标识字符。所述预设生成规则为预先定义的请求标识的生成策略,例如可以是根据请求中携带的互联网协议地址(IP地址)又或是请求发起端所在硬件设备对应的媒体访问控制地址(MAC地址)生成请求标识,本实施例对此不作限制。
进一步地,为了保证生产的请求标识的唯一性,本实施例中APM平台可获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的互联网协议地址;从所述互联网协议地址中选取预设位数的字符,对所述字符和所述媒体访问控制地址进行组合,并将组合结果作为所述接口调用请求对应的请求标识。其中,所述从互联网协议地址中选取预设位数的字符,可以是选取IP地址中的后四位字符。例如,APM平台获取到发起接口调用请求的应用服务的MAC地址为“44-45-53-54-00-00”,获取到对应的IP地址为“58.19.21.40”,则APM先提取MAC地址中的数字“444553540000”以及IP地址中的后四位数字“2140”,然后将二者进行组合,获得组合后的请求标识“4445535400002140”。
当然,本实施例中,所述请求标识的生成方式还可以是由APM平台获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的请求发起时间;对所述请求发起时间进行时间格式转换,获取对应的时间戳;对所述媒体访问控制地址和所述时间戳进行组合以获取组合字符,将所述组合字符输入至预设散列函数,并将获取到的函数输出结果作为所述接口调用请求对应的请求标识。
应理解的是,应用服务通常会采用24小时制或12小时制,为了对时间日期对象进行统一,本实施例中APM平台将对获取到的请求发起时间进行时间格式转换,将其转换为对应的时间戳,本实施例中所述时间戳优选为unix时间戳。例如请求发起时间2018-09-1915:33:19,转换为Unix时间戳则为1537342399。
可理解的是,所述散列函数即Hash函数,其可将任意长度的输入通过散列算法变换成固定长度的输出,该输出为散列值。本实施例将Hash算法应用到请求标识的生成中,保证了生成的请求标识的唯一性。
在具体实现中,APM根据预设标识生成规则为所述接口调用请求生成唯一的请求标识,然后根据该请求标识对接口调用请求进行标记,再根据请求中携带的访问地址将该接口调用请求发送至下一跳应用服务。
本实施例通过在检测到应用服务发起的接口调用请求时,获取接口调用请求对应的类对象;检测所述类对象是否为预设拦截对象,若是则对类对象进行字节码增强,并通过字节码增强后的类对象对接口调用请求进行拦截;然后按预设标识生成规则生成接口调用请求对应的请求标识,再根据请求标识对接口调用请求进行标记,并对标记后的接口调用请求进行转发,由于是对请求对应的类对象进行拦截检测,在需要对其拦截时对类对象进行类增强,然后通过增强后的类对象对请求进行拦截并标记相应的请求标识,从而能够实现对调用请求的全面监控,降低了请求监控实现过程中的开发难度和性能耗费。
参考图3,图3为本发明调用请求监控方法第二实施例的流程示意图。
基于上述第一实施例,在本实施例中,所述步骤S30之后,所述方法还包括:
步骤S40:在所述应用服务的存储空间中查找所述接口调用请求对应的日志文件,并根据所述请求标识对所述日志文件进行标记;
需要说明的是,为了便于后续APM平台对每一条调用请求的请求链路进行查看,APM平台在对调用请求进行方法切面的拦截时,将在发起调用请求的应用服务侧和响应调用请求的应用服务侧均产生一条监控日志(即所述日志文件),且该监控日志中都携带有该调用请求对应的请求标识;当然,APM平台在检测到响应调用请求的应用服务端侧在对请求进行响应的过程中还访问了数据库时,还将在该应用服务中额外产生一条关于数据库访问的监控日志。
应理解的是,由于接口调用请求对应的请求标识是由APM品台生成,因而最初发起接口调用请求的应用服务的日志文件中并不携带所述请求标识,因此,本实施例APM平台在检测到接口调用请求响应完毕时,将在发起接口调用请求的应用服务的存储空间中查找所述接口调用请求对应的日志文件,并根据所述请求标识对所述日志文件进行标记。
步骤S50:调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存。
需要说明的是,所述预设日志采集组件,可以是预先配置的用于对请求日志文件进行采集的组件,本实施例中所述预设日志采集组件优选为Flume组件,Flume是Cloudera(一种开源平台)提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
此外,所述分布式消息系统可以是一种日志分析平台或系统,本实施例中为ELK平台(ELK,Elasticsearch Logstash Kibana),其中,Elasticsearch是一个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能;Logstash则主要是用于日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式;Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
在具体实现中,APM平台可调用Flume组件以所述请求标识为搜索依据,在接口调用请求整个请求生命周期所涉及的应用服务中搜索对应的日志文件,并将查找到的日志文件先上传至Kafka平台,再由Kafka平台发送至分布式消息系统进行保存。其中,所述Kafka平台是一种分布式流媒体平台,多用于在系统或应用程序之间构建可靠的用于传输实时数据的管道,以及构建实时的流数据处理程序来变换或处理数据流。
进一步地,所述Kafka平台在接收到所述日志文件后,先根据这些日志文件生成对应的消息队列,然后由所述ELK平台中的Logstash对所述消息队列进行消费,再通过Filter插件对消费后的数据进行时间对象重定义,然后根据重定义后的数据生成接口调用请求对应的请求调用链路,并对所述请求调用链路进行保存。
本实施例通过在应用服务的存储空间中查找接口调用请求对应的日志文件,并根据请求标识对日志文件进行标记;调用预设日志采集组件实时采集携带有请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存,较传统的数据库存储方式具备更高效的存储、更快捷的检索方式。
参考图4,图4为本发明调用请求监控方法第三实施例的流程示意图。
基于上述各实施例,在本实施例中,所述步骤S50之后,所述方法还包括:
步骤S60:在接收到调用链路查看指令时,提取所述调用链路查看指令中包含的目标请求标识;
应理解的是,现如今的互联网服务通常都是基于大规模的分布式集群来实现,用户的一次请求通常由多个系统协同完成处理,而且这些处理是发生在不同机器甚至是不同集群上的,当请求处理发生异常时,需要快速理解系统行为,发现问题,通常是通过请求对应的日志文件进行问题排查。
基于上述各实施例,本实施例中,当研发人员需要对某一条调用请求的整个调用链路进行查看时,即可通过向APM平台发送所述调用链路查看指令,当APM平台在接收到该指令时,先对指令进行解析,然后提取指令中携带的需要查看的调用请求对应的请求标识,即所述目标请求标识。
步骤S70:根据所述目标请求标识从所述分布式消息系统中读取对应的请求日志文件,并读取所述日志文件中包含的时间日期参数;
应理解的是,由于本实施例中每一条调用请求对应的请求日志都存放在所述分布式消息系统中,APM平台在研发人员需要查看请求日志时,可通过所述目标请求标识从所述分布式消息系统中读取对应的请求日志文件。
可理解的是,所述时间日期参数可以是所述请求日志文件中携带的该请求日志文件的产生时间,其可以用来表征应用服务对接收到请求进行响应的大致时间。
在具体实现中,APM平台在提取到所述目标请求标识后,即可根据该目标请求标识从分布式消息系统中读取对应的请求日志文件,并读取所述日志文件中包含的时间日期参数。
步骤S80:根据所述时间日期参数对所述请求日志文件进行排序,并对排序后的请求日志文件进行展示。
可理解的是,日志文件中包含的时间日期参数大致能反映调用请求的调用顺序,因此本实施例中为了能够使研发人员较为直观的了解到接口调用请求整个请求生命周期中的调用链路情况,APM将根据请求日志文件中的时间日期参数对获取到的所有请求日志文件进行排序,然后按照时间的先后顺序对请求日志文件进行展示,以便查看。
本实施例通过在接收到调用链路查看指令时,提取调用链路查看指令中包含的目标请求标识;根据目标请求标识从分布式消息系统中读取对应的请求日志文件,并读取日志文件中包含的时间日期参数;根据时间日期参数对请求日志文件进行排序,并对排序后的请求日志文件进行展示,能够直观的对请求日志文件进行展示,便于后续问题排查。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有调用请求监控程序,所述调用请求监控程序被处理器执行时实现如上文所述的调用请求监控方法的步骤。
参照图5,图5为本发明调用请求监控装置第一实施例的结构框图。
如图5所示,本发明实施例提出的调用请求监控装置包括:
对象获取模块501,用于在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
请求拦截模块502,用于检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
请求标记模块503,用于按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
本实施例通过在检测到应用服务发起的接口调用请求时,获取接口调用请求对应的类对象;检测所述类对象是否为预设拦截对象,若是则对类对象进行字节码增强,并通过字节码增强后的类对象对接口调用请求进行拦截;然后按预设标识生成规则生成接口调用请求对应的请求标识,再根据请求标识对接口调用请求进行标记,并对标记后的接口调用请求进行转发,由于是对请求对应的类对象进行拦截检测,在需要对其拦截时对类对象进行类增强,然后通过增强后的类对象对请求进行拦截并标记相应的请求标识,从而能够实现对调用请求的全面监控,降低了请求监控实现过程中的开发难度和性能耗费。
基于本发明上述调用请求监控装置第一实施例,提出本发明调用请求监控装置的第二实施例。
在本实施例中,所述请求拦截模块502,还用于获取所述类对象对应的目标对象标识;读取预先配置的拦截对象集,所述拦截对象集中包含若干个待拦截类对象对应的拦截对象标识;检测所述目标对象标识是否属于所述拦截对象标识。
进一步地,所述请求拦截模块502,还用于调用预置字节码增强插件对所述类对象中的Java类进行二进制修改,并对修改后的类对象进行拦截器添加,以获取字节码增强后的类对象;根据字节码增强后的类对象对所述接口调用请求进行方法切面拦截。
进一步地,本实施例中所述调用请求监控装置还包括日志采集模块,所述日志采集模块,用于在所述应用服务的存储空间中查找所述接口调用请求对应的日志文件,并根据所述请求标识对所述日志文件进行标记;调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存。
进一步地,所述日志采集模块,还用于在接收到调用链路查看指令时,提取所述调用链路查看指令中包含的目标请求标识;根据所述目标请求标识从所述分布式消息系统中读取对应的请求日志文件,并读取所述日志文件中包含的时间日期参数;根据所述时间日期参数对所述请求日志文件进行排序,并对排序后的请求日志文件进行展示。
进一步地,所述请求标记模块503,还用于获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的互联网协议地址;从所述互联网协议地址中选取预设位数的字符,对所述字符和所述媒体访问控制地址进行组合,并将组合结果作为所述接口调用请求对应的请求标识。
进一步地,所述请求标记模块503,还用于获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的请求发起时间;对所述请求发起时间进行时间格式转换,获取对应的时间戳;对所述媒体访问控制地址和所述时间戳进行组合以获取组合字符,将所述组合字符输入至预设散列函数,并将获取到的函数输出结果作为所述接口调用请求对应的请求标识。
本发明调用请求监控装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种调用请求监控方法,其特征在于,所述方法包括:
在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
2.如权利要求1所述的方法,其特征在于,所述检测所述类对象是否为预设拦截对象的步骤,包括:
获取所述类对象对应的目标对象标识;
读取预先配置的拦截对象集,所述拦截对象集中包含若干个待拦截类对象对应的拦截对象标识;
检测所述目标对象标识是否属于所述拦截对象标识。
3.如权利要求1所述的方法,其特征在于,所述对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截的步骤,包括:
调用预置字节码增强插件对所述类对象中的Java类进行二进制修改,并对修改后的类对象进行拦截器添加,以获取字节码增强后的类对象;
根据字节码增强后的类对象对所述接口调用请求进行方法切面拦截。
4.如权利要求1至3任一项所述的方法,其特征在于,所述对标记后的接口调用请求进行转发的步骤之后,所述方法还包括:
在所述应用服务的存储空间中查找所述接口调用请求对应的日志文件,并根据所述请求标识对所述日志文件进行标记;
调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存。
5.如权利要求4所述的方法,其特征在于,所述调用预设日志采集组件实时采集携带有所述请求标识的所有日志文件,并将采集到的日志文件上传至分布式消息系统进行保存的步骤之后,所述方法还包括:
在接收到调用链路查看指令时,提取所述调用链路查看指令中包含的目标请求标识;
根据所述目标请求标识从所述分布式消息系统中读取对应的请求日志文件,并读取所述日志文件中包含的时间日期参数;
根据所述时间日期参数对所述请求日志文件进行排序,并对排序后的请求日志文件进行展示。
6.如权利要求5所述的方法,其特征在于,所述按预设标识生成规则生成所述接口调用请求对应的请求标识的步骤,包括:
获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的互联网协议地址;
从所述互联网协议地址中选取预设位数的字符,对所述字符和所述媒体访问控制地址进行组合,并将组合结果作为所述接口调用请求对应的请求标识。
7.如权利要求5所述的方法,其特征在于,所述按预设标识生成规则生成所述接口调用请求对应的请求标识的步骤,还包括:
获取所述应用服务对应的媒体访问控制地址以及所述接口调用请求对应的请求发起时间;
对所述请求发起时间进行时间格式转换,获取对应的时间戳;
对所述媒体访问控制地址和所述时间戳进行组合以获取组合字符,将所述组合字符输入至预设散列函数,并将获取到的函数输出结果作为所述接口调用请求对应的请求标识。
8.一种请求调用链路监控装置,其特征在于,所述装置包括:
对象获取模块,用于在检测到应用服务发起的接口调用请求时,获取所述接口调用请求对应的类对象;
请求拦截模块,用于检测所述类对象是否为预设拦截对象,若是则对所述类对象进行字节码增强,并通过字节码增强后的类对象对所述接口调用请求进行拦截;
请求标记模块,用于按预设标识生成规则生成所述接口调用请求对应的请求标识,根据所述请求标识对所述接口调用请求进行标记,并对标记后的接口调用请求进行转发。
9.一种调用请求监控设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的调用请求监控程序,所述调用请求监控程序配置为实现如权利要求1至7中任一项所述的调用请求监控方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有调用请求监控程序,所述调用请求监控程序被处理器执行时实现如权利要求1至7任一项所述的调用请求监控方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910206045.7A CN110083391A (zh) | 2019-03-16 | 2019-03-16 | 调用请求监控方法、装置、设备及存储介质 |
PCT/CN2019/116471 WO2020186773A1 (zh) | 2019-03-16 | 2019-11-08 | 调用请求监控方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910206045.7A CN110083391A (zh) | 2019-03-16 | 2019-03-16 | 调用请求监控方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110083391A true CN110083391A (zh) | 2019-08-02 |
Family
ID=67413274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910206045.7A Pending CN110083391A (zh) | 2019-03-16 | 2019-03-16 | 调用请求监控方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110083391A (zh) |
WO (1) | WO2020186773A1 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110865927A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 区块链调用链路异常检测方法、装置和计算机设备 |
CN111488257A (zh) * | 2020-04-14 | 2020-08-04 | 杭州云创共享网络科技有限公司 | 一种云服务链路跟踪监控方法、装置、设备及存储介质 |
WO2020186773A1 (zh) * | 2019-03-16 | 2020-09-24 | 平安科技(深圳)有限公司 | 调用请求监控方法、装置、设备及存储介质 |
CN112261072A (zh) * | 2019-10-10 | 2021-01-22 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN112839096A (zh) * | 2021-01-14 | 2021-05-25 | 平安国际智慧城市科技股份有限公司 | 监控函数执行时长的方法、装置、计算机设备及存储介质 |
CN113032221A (zh) * | 2021-03-30 | 2021-06-25 | 深圳红途创程科技有限公司 | 数据采集和传输方法、装置、计算机设备及存储介质 |
CN113051272A (zh) * | 2021-03-30 | 2021-06-29 | 深圳红途创程科技有限公司 | 数据库表结构构建方法、装置、计算机设备及存储介质 |
CN113079048A (zh) * | 2021-03-30 | 2021-07-06 | 深圳红途创程科技有限公司 | 数据采集方法、装置、计算机设备及存储介质 |
CN113918770A (zh) * | 2021-12-16 | 2022-01-11 | 上海冰鉴信息科技有限公司 | 字符串与时间字段的转换方法及装置 |
CN114253630A (zh) * | 2021-12-23 | 2022-03-29 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
CN114285669A (zh) * | 2021-12-31 | 2022-04-05 | 深圳昂楷科技有限公司 | 一种内嵌应用系统插件的水印嵌入方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763054A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 测试案例的测试效果展示方法、电子装置及存储介质 |
CN109474698A (zh) * | 2018-12-14 | 2019-03-15 | 平安城市建设科技(深圳)有限公司 | 访问请求标记方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276271A (zh) * | 2007-03-29 | 2008-10-01 | 北京邮电大学 | 一种面向切面编程的拦截器系统及方法 |
US20150378864A1 (en) * | 2014-06-25 | 2015-12-31 | SmartBear Software, Inc. | Systems and methods for instrumenting applications for performance monitoring |
CN107133171A (zh) * | 2017-05-02 | 2017-09-05 | 山东浪潮通软信息科技有限公司 | 一种基于组件式的轻量aop框架及其使用方法 |
CN107291567A (zh) * | 2017-06-20 | 2017-10-24 | 山东浪潮通软信息科技有限公司 | 一种数据调用方法、装置以及系统 |
CN110083391A (zh) * | 2019-03-16 | 2019-08-02 | 平安科技(深圳)有限公司 | 调用请求监控方法、装置、设备及存储介质 |
-
2019
- 2019-03-16 CN CN201910206045.7A patent/CN110083391A/zh active Pending
- 2019-11-08 WO PCT/CN2019/116471 patent/WO2020186773A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763054A (zh) * | 2018-04-17 | 2018-11-06 | 平安科技(深圳)有限公司 | 测试案例的测试效果展示方法、电子装置及存储介质 |
CN109474698A (zh) * | 2018-12-14 | 2019-03-15 | 平安城市建设科技(深圳)有限公司 | 访问请求标记方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
DUANXZ: "JVM插庄之一:JVM字节码增强技术介绍及入门示例", 《HTTPS://WWW.CNBLOGS.COM/DUANXZ/P/4964318.HTML》 * |
刘星石: "通过使用Byte Buddy,便捷地创建Java Agent", 《HTTPS://BLOG.CSDN.NET/STARSLIU/ARTICLE/DETAILS/50773429》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020186773A1 (zh) * | 2019-03-16 | 2020-09-24 | 平安科技(深圳)有限公司 | 调用请求监控方法、装置、设备及存储介质 |
CN112261072A (zh) * | 2019-10-10 | 2021-01-22 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN112261072B (zh) * | 2019-10-10 | 2024-04-09 | 北京京东尚科信息技术有限公司 | 一种服务调用方法、装置、设备和存储介质 |
CN110865927A (zh) * | 2019-11-20 | 2020-03-06 | 腾讯科技(深圳)有限公司 | 区块链调用链路异常检测方法、装置和计算机设备 |
CN111488257A (zh) * | 2020-04-14 | 2020-08-04 | 杭州云创共享网络科技有限公司 | 一种云服务链路跟踪监控方法、装置、设备及存储介质 |
CN112839096B (zh) * | 2021-01-14 | 2022-07-22 | 深圳赛安特技术服务有限公司 | 监控函数执行时长的方法、装置、计算机设备及存储介质 |
CN112839096A (zh) * | 2021-01-14 | 2021-05-25 | 平安国际智慧城市科技股份有限公司 | 监控函数执行时长的方法、装置、计算机设备及存储介质 |
CN113051272A (zh) * | 2021-03-30 | 2021-06-29 | 深圳红途创程科技有限公司 | 数据库表结构构建方法、装置、计算机设备及存储介质 |
CN113079048A (zh) * | 2021-03-30 | 2021-07-06 | 深圳红途创程科技有限公司 | 数据采集方法、装置、计算机设备及存储介质 |
CN113032221A (zh) * | 2021-03-30 | 2021-06-25 | 深圳红途创程科技有限公司 | 数据采集和传输方法、装置、计算机设备及存储介质 |
CN113918770A (zh) * | 2021-12-16 | 2022-01-11 | 上海冰鉴信息科技有限公司 | 字符串与时间字段的转换方法及装置 |
CN113918770B (zh) * | 2021-12-16 | 2022-03-25 | 上海冰鉴信息科技有限公司 | 字符串与时间字段的转换方法及装置 |
CN114253630A (zh) * | 2021-12-23 | 2022-03-29 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
CN114253630B (zh) * | 2021-12-23 | 2023-07-25 | 上海新炬网络信息技术股份有限公司 | 基于Java切面修改Form表单变化信息实现日志保存的方法 |
CN114285669A (zh) * | 2021-12-31 | 2022-04-05 | 深圳昂楷科技有限公司 | 一种内嵌应用系统插件的水印嵌入方法 |
CN114285669B (zh) * | 2021-12-31 | 2024-08-27 | 深圳昂楷科技有限公司 | 一种内嵌应用系统插件的水印嵌入方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020186773A1 (zh) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083391A (zh) | 调用请求监控方法、装置、设备及存储介质 | |
CN111752799B (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
CN108471429B (zh) | 一种网络攻击告警方法及系统 | |
CN104144142B (zh) | 一种Web漏洞挖掘方法及系统 | |
CN108304704A (zh) | 权限控制方法、装置、计算机设备和存储介质 | |
CN103546343B (zh) | 网络流量分析系统的网络流量展示方法和系统 | |
CN103577482B (zh) | 一种网页收藏方法、装置及浏览器 | |
US10659335B1 (en) | Contextual analyses of network traffic | |
CN111881011A (zh) | 日志管理方法、平台、服务器及存储介质 | |
CN111740868B (zh) | 告警数据的处理方法和装置及存储介质 | |
CN110209518A (zh) | 一种多数据源日志数据集中收集存储方法及装置 | |
CN102968591B (zh) | 基于行为片段共享的恶意软件特征聚类分析方法及系统 | |
US11178160B2 (en) | Detecting and mitigating leaked cloud authorization keys | |
CN112231711B (zh) | 一种漏洞检测方法、装置、计算机设备及存储介质 | |
CN114465741B (zh) | 一种异常检测方法、装置、计算机设备及存储介质 | |
CN114528457B (zh) | Web指纹检测方法及相关设备 | |
CN108462598A (zh) | 一种日志生成方法、日志分析方法及装置 | |
CN104182681A (zh) | 基于hook的iOS系统关键行为检测装置和方法 | |
CN103455600A (zh) | 一种视频url抓取方法、装置及服务器设备 | |
CN112559538B (zh) | 关联关系生成方法、装置、计算机设备和存储介质 | |
CN107395651A (zh) | 服务系统及信息处理方法 | |
CN113810408A (zh) | 网络攻击组织的探测方法、装置、设备及可读存储介质 | |
US9166991B2 (en) | Identifying business transactions from traffic in an enterprise content management system | |
CN114697232A (zh) | Skywalking探针的指标数据采集系统、方法及电子设备 | |
CN102271331B (zh) | 一种检测业务提供商sp站点可靠性的方法及系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190802 |