CN115934471A - 基于大数据的数据采集方法及大数据系统 - Google Patents
基于大数据的数据采集方法及大数据系统 Download PDFInfo
- Publication number
- CN115934471A CN115934471A CN202211618324.2A CN202211618324A CN115934471A CN 115934471 A CN115934471 A CN 115934471A CN 202211618324 A CN202211618324 A CN 202211618324A CN 115934471 A CN115934471 A CN 115934471A
- Authority
- CN
- China
- Prior art keywords
- data
- virtual machine
- parameter
- path
- java virtual
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于大数据的数据采集方法及大数据系统,该方法包括:终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至Java虚拟机,并在加载过程中创建埋点监听对象,埋点采集器中配置有埋点信息,埋点信息包括待采集业务参数的参数名称及待采集业务参数所在的参数路径;基于埋点监听对象监听Java虚拟机中当前被加载的路径是否与参数路径一致,将被加载且与参数路径一致的路径进行拦截,并作为目标路径;基于预定的字节码生成操作库及埋点采集器,采集目标路径中与参数名称一致的业务参数。
Description
技术领域
本发明属于信息技术领域,具体地,涉及一种基于大数据的数据采集方法及大数据系统。
背景技术
事件追踪(Event Tracking)也叫埋点,其技术实质是先监听软件应用运行过程中的事件,当需要关注的事件发生时进行判断和捕获,数据埋点是一种常用的数据采集的方法。
现有的一些数据采集方式包括侵入式埋点采集及无侵入式埋点采集,对于无侵入式埋点采集,常使用的技术包括Pinpoint和Skywalking。Pinpoint和Skywalking都是分布式系统的应用程序性能管理及监视工具,两者都能实现无侵入式的调用链采集及监控,两者解决的是全流程或全链路问题数据的定位及监控。目前对于涉及一些海量数据业务场景的应用,需要捕获更细粒度的数据来辅助监控及进行数据分析,如应用中的业务参数,因此自动采集软件服务中的业务数据成为有待解决的问题。
发明内容
本发明提供了一种基于大数据的数据采集方法及大数据系统,旨在实现软件服务核心环节业务数据的捕获,解决自动采集软件服务中的业务数据的问题。
为了实现上述目的,本发明提供了一种基于大数据的数据采集方法,所述方法包括:
终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数。
可选地,所述埋点采集器中还配置有预定的采集表达式,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤之后,还包括:
将所采集的业务参数整理为预定格式的字符串,利用所述采集表达式获取所述预定格式的字符串中的业务参数。
可选地,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤,包括:
基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径及所述目标路径中与所述参数名称一致的业务参数;
在终端运行Java应用对应的Java虚拟机的步骤之后,还包括:
若所述Java应用接收的访问请求包括多个服务,则采用异步多线程的方式处理所述多个服务,调用所述埋点采集器采集所述异步多线程的唯一标识;
关联所采集的目标路径及所述异步多线程的唯一标识。
可选地,所述异步多线程的唯一标识包括服务标识及跨度标识。
可选地,所述埋点采集器中还配置有推送地址,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤之后,还包括:
将采集数据作为目标数据,所述采集数据包括业务参数、目标路径及所述异步多线程的唯一标识;
将所述目标数据处理为消息队列,并推送所述消息队列至所述推送地址所在的云服务器。
可选地,所述将预先配置的埋点采集器加载至所述Java虚拟机的步骤,包括:
向所述Java虚拟机发送下载命令,基于所述下载命令调用Java虚拟机工具接口的预定方法,通过所述预定方法加载所述埋点采集器。
可选地,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤,包括:
利用所述字节码生成操作库修改所述目标路径中对应的类代码,得到字节码文件;
加载所述字节码文件,并调用所述埋点采集器采集所述字节码文件中与所述参数名称一致的业务参数。
可选地,所述终端运行Java应用对应的Java虚拟机的步骤之前,还包括:
调用Java虚拟机工具接口,对所述Java应用中预定的类文件进行加解密处理,得到解密后的类文件,将所述解密后的类文件封装成预定的文件,将所述预定的文件加载至所述Java虚拟机中运行。
本发明实施例还提供一种大数据系统,所述大数据系统包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现上述的方法。
本发明实施例的方法及系统具有下列优点:
本发明实施例采用无侵入的方式,通过在埋点采集器配置待采集业务参数的参数名称及待采集业务参数所在的参数路径,在JVM运行过程中加载埋点采集器并进行字节码增强,使得埋点采集器能够自动、准确、针对性地采集Java应用中该参数路径中的业务参数,java应用本身不需要修改代码及配置,能够满足大批量业务数据的采集,对承载的资源占用较小,不会影响java应用本身服务。
附图说明
图1为本发明一个实施例中的系统架构图;
图2为本发明一个实施例中基于大数据的数据采集方法的流程示意图;
图3为本发明另一个实施例中基于大数据的数据采集方法的流程示意图;
图4为本发明一个实施例中大数据系统的技术框架图;
图5为本发明一个实施例中大数据系统的硬件组成示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
图1是本发明实施例大数据系统的系统架构图,如图1所示,该系统架构图包括终端01、多个基站02、多个边缘计算节点MEC03及云服务器04。其中,云服务器04作为数据管理中心,通过MEC03管理的方式提供数据资源入库,将网络节点的数据资源发送到全局的应用仓库,并提供各级节点的应用服务配置、监测、管控及数据存储。
边缘计算节点MEC03在本发明实施例中与云服务器04配对,在配对后,主要与云服务器04进行通信,并与基站02,终端01进行数据交互,最终完成数据采集及上传的操作。边缘计算节点MEC03具备一定的计算能力和存储能力,其下沉到靠近最终终端01的一侧,因此其响应速度很快。
基站02与边缘计算节点MEC03配对,一个边缘计算节点MEC03配对有多个基站02,终端01可以是固定或移动的终端设备,具备有线及无线输入输出能力,并具备本地的高速处理能力。
如图2所示,本发明实施例提供一种基于大数据的数据采集方法,应用于图1所示的系统架构,包括以下步骤:
S101,终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
在本发明实施例中,埋点采集器可以使用agent技术构建一个独立于Java应用的代理程序(即Agent),用来协助监测、运行甚至替换其他Java虚拟机(Java VirtualMachine,JVM)上的应用程序,其核心实现基于JVM的Java Agent机制来实现,Java Agent又叫做Java探针,Java agent以jar包的形式部署在JVM中,Java Agent是一种可以动态修改Java字节码的技术,Java应用中的Java类编译之后形成字节码被JVM执行,JVM在执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能,例如对指定方法或接口时做一些额外操作,例如打印日志、采集数据等。
在终端启动Java应用的同时,如果接收到埋点采集器的启动命令,则埋点采集器与Java应用一同启动。Java应用中的类被JVM执行,埋点采集器在JVM运行过程中采集业务参数。
在本发明实施例中,通过attach机制来请求JVM加载对应的埋点采集器,attach机制是指JVM提供的一种JVM进程间通信的功能,具体地,在该Java应用对应的JVM运行的过程中,向JVM发送load下载命令,基于下载命令调用Java虚拟机工具接口的预定方法,即Agent_OnAttach方法,通过Agent_OnAttach方法将埋点采集器附加至JVM执行。另外,埋点采集器附加到Java应用埋点,埋点采集器以jar包的形式部署在JVM中,实现无侵入式数据采集,包括:
1、定义一个配置文件MANIFEST.MF,配置文件中必须包含AgentClass,配置文件定义了与扩展和Java应用包相关的数据,包括配置数据,例如版本信息、Java应用的相关属性信息及自定义属性信息等;
2、创建一个Agent Class指定的类,该类包含agentmain方法;
3、将配置文件和Agent类打成jar包;
4、将jar包载入JVM,JVM运行时将会自动执行agentmain方法的逻辑。
上述的agentmain方法,在Java应用丝毫不改动,甚至连启动参数都不加的情况下,可以修改类,并且是JVM运行时修改,而且不重新创建类加载器。
对于JVM运行的过程中加载的埋点采集器,其agentmain方法会在加载之时立即执行,agentmain方法提供了动态修改运行中的已经被加载的类的途径,包括:
1、解析埋点采集器预先配置的MANIFEST.MF配置文件里的参数,其中,配置文件中包含AgentClass类;
2、创建Instrumentation接口的实例,即创建埋点监听对象InstrumentationImpl,Instrumentation接口是Java提供的一个来自JVM的接口,能够用来监控和扩展JVM上运行的应用程序,比如修改类路径、获取已经加载的类等等。其中最常用的是通过addTransformer方法添加类转化器,动态修改类定义,从而实现无侵入的应用监控;
3、埋点监听对象InstrumentationImpl监听ClassFileLoadHook事件,ClassFileLoadHook事件是类加载的事件,是在读取字节码文件之后回调时用的,这样可以对原来的字节码做修改;
4、调用监听对象InstrumentationImpl的loadClassAndCallAgentmain方法,这个loadClassAndCallAgentmain方法会去调用埋点采集器的配置文件里指定的AgentClass类的agentmain方法。
此外,在埋点采集器的配置文件中预先配置埋点信息,埋点信息可以自定义配置,埋点的数量可以为一个或多个。本发明实施例采用非侵入式埋点技术,不需要修改Java应用本身的代码,就可以完成埋点采集器的部署。
其中,埋点信息包括待采集业务参数的参数名称及待采集业务参数所在的参数路径。待采集业务参数可以是多层级的业务参数,包括请求参数及响应参数,例如,请求参数为a、b,在Java应用中执行了函数c=f(a+b),则响应参数为c,即Java应用中的请求参数a、b及响应参数c对应的数值均会被埋点采集器采集。当然,如果埋点采集器中配置了其他业务参数,例如接口传递参数,所配置的其他业务参数的数值同样也会被采集。
待采集业务参数所在的参数路径包括该待采集业务参数所属的类名、方法名。待采集业务参数的名称必须与Java应用中相应的类及方法中对应的参数名称一致,并且待采集业务参数所处位置或顺序也必须与Java应用中相应的类及方法中名称一致的参数所处位置或顺序一致,这样才能准确采集到业务参数,否则会引起异常。
S102,基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
在本发明实施例中,在JVM运行过程中,埋点监听对象跟踪并监听该正在运行的JVM,监听运行中的JVM的类和方法级别的加载状态信息。具体地,如果JVM有类CLASS及方法被加载,则埋点采集器会查询及遍历自身配置文件中的埋点信息,并进行比对,如果埋点信息中有类CLASS及方法与被加载的类CLASS及方法一致,则进行拦截,并将所拦截的类CLASS及方法作为目标路径,否则不进行拦截。
S103,基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数。
本发明实施例中,对于拦截的目标路径中的类进行字节码增强,字节码(Bytecode)是一种包含执行程序、由一序列op代码/数据对组成的二进制文件,主要为了实现特定软件运行和软件环境、与硬件环境无关,字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码增强指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对Java应用的二进制文件进行修改。字节码增强技术可以在不侵入业务代码的情况下植入想要实现的独立逻辑,Java字节码增强主要是为了减少冗余代码,提高性能。
其中,实现字节码增强的主要步骤为:
1、修改字节码:在内存中获取到原来的字节码,然后通过一些工具(如ASM,Javaasist)来修改它的byte[]数组,得到一个新的byte数组;
2、使修改后的字节码生效,有以下两种方法:
1)自定义ClassLoader来加载修改后的字节码;
2)替换掉原来的字节码:在JVM加载类Class时,拦截,返回修改后的字节码;或者在运行时,使用Instrumentation.redefineClasses方法来替换掉原来的字节码。
本发明实施例具体通过调用预定的字节码生成操作库,修改该目标路径的类CLASS,修改后得到字节码文件,无需编译器的帮助。本发明实施例中预定的字节码生成操作库可以采用ByteBuddy,Byte Buddy用于在Java应用运行时创建和修改Java类。与Java类库附带的代码生成实用程序不同,Byte Buddy允许创建任意类。本发明实施例在jvm运行期间利用ByteBuddy对拦截的目标路径中的类进行了修改,即在类的方法调用的前后加上业务参数的采集逻辑,修改后得到字节码文件,并且jvm重载了修改后的字节码文件,使之生效。最后,调用埋点采集器采集重载后的字节码文件中与配置文件中的参数名称相同的业务参数,实现对业务参数的自动、针对性采集。
本发明实施例通过在埋点采集器配置待采集业务参数的参数名称及待采集业务参数所在的参数路径,在JVM运行过程中加载埋点采集器并进行字节码增强,使得埋点采集器能够采集Java应用中该参数路径中的业务参数,实现业务参数的准确、针对性采集,且java应用本身不需要修改代码及配置,能够满足大批量业务数据的采集,对承载的资源占用较小,约为1.8%-2.6%,不会影响java应用本身服务。现有技术中的无侵入式埋点采集,如Pinpoint和Skywalking技术,解决全流程跟踪问题,实现的是对链路数据的采集,不能针对性地采集方法中多层级的业务参数,并且Pinpoint和Skywalking的功能范围较大,对承载的资源占用达到约3.5%~6%,如果软件服务并发和交互极其频繁的情况下,其性能对于软件服务本身有较大的负担。
而对于其他的埋点数据采集技术,例如面向切面编程(Aspect OrientedProgramming,AOP)技术,是常用的针对日志记录、性能统计、安全控制、事务处理及异常处理等场景所使用的方法,能够分离系统的业务逻辑和系统服务,满足的一些核心环节的业务埋点,但其需要额外编码控制才能够实现,会影响java应用的业务逻辑代码,而本发明实施例通过在JVM运行时进行字节码增强实现无代码侵入式业务数据的采集,因此本发明实施例相对AOP技术具有明显优势及更强的通用性。
通过上面的描述可以得到,本发明实施例与现有技术相比,采用无侵入的方式,通过在埋点采集器配置待采集业务参数的参数名称及待采集业务参数所在的参数路径,在JVM运行过程中加载埋点采集器并进行字节码增强,使得埋点采集器能够自动、准确、针对性地采集Java应用中该参数路径中的业务参数,java应用本身不需要修改代码及配置,能够满足大批量业务数据的采集,对承载的资源占用较小,不会影响java应用本身服务。
本发明在上述实施例的基础上还提供另一较优实施例,如图3所示,其中,埋点采集器中还配置有预定的采集表达式,该实施例包括:
S101,终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
S102,基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
S103,基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数;
S104,将所采集的业务参数整理为预定格式的字符串,利用所述采集表达式获取所述预定格式的字符串中的业务参数。
其中,上述步骤S101-S103与上述实施例基本相同,此处不再赘述。
对于步骤S104,预定的采集表达式可以是Jsonpath表达式,预定格式的字符串为JSON字符串。Jsonpath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,即Jsonpath为JSON文档提供了解析能力,通过使用Jsonpath,可以方便的查找节点及获取想要的数据。Jsonpath表达式的基本格式为:jsonpath(data,"表达式"),其中,data是接口返回的数据,双引号中是jsonpath表达式。
本发明实施例采集的数据的格式可能有其他格式,例如xml格式,将采集的数据的格式整理为统一的JSON字符串并记录在文档中,然后利用Jsonpath表达式从该文档中获取该JSON字符串中的业务参数,这样能够保证跨系统日志格式的一致性。
本发明在上述实施例的基础上还提供另一较优实施例,其中,在与所述参数名称一致的业务参数的同时,还采集目标路径,即采集业务参数所在的类及方法,在终端运行Java应用对应的Java虚拟机的步骤之后还包括步骤S105-S106,该实施例包括:
S101,终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
S102,基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
S103,基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数;
S105,若所述Java应用接收的访问请求包括多个服务,则采用异步多线程的方式处理所述多个服务,调用所述埋点采集器采集所述异步多线程的唯一标识;
S106,关联所采集的目标路径及所述异步多线程的唯一标识。
其中,上述步骤S101-S103与上述实施例基本相同,此处不再赘述。
对于步骤S105-S106,对于一些微服务架构,一次请求往往需要涉及到多个服务,需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。例如,对应某一Java应用,其涉及服务a、b、c,那么可以采用异步多线程的方式处理服务a、b、c,每个线程所处理的服务具有一个唯一标识,异步多线程的唯一标识包括服务标识及跨度标识,服务标识为Traceid,跨度标识为Spanid,服务标识可以用于查出本次请求调用的所有服务,跨度标识即为每一次服务调用的跨度,用于记录服务调用顺序。一个请求的所有唯一标识能够表示出本次请求调用的所有服务及调用顺序,形成本次请求的全链路或者调用链,具体地,通过字节码增强,Traceid和Spanid被添加到请求头header中,通过服务之间的HTTP调用或者RPC调用实现在上下节点之间的传递,从而实现整个调链路的串连。本发明实施例能够调用埋点采集器采集异步多线程的各个Traceid及Spanid,在具体实现方式中,埋点采集器可以采用Pinpoint或Skywalking技术的相关技术,通过插件化+javaagent的形式来实现了Traceid及Spanid的自动采集,这种方式同样也是对代码无侵入性,且插件化意味着可插拔,扩展性好。当然,本发明实施例也可以与其他的能够采集全链路数据的采集或监控产品进行融合,以采集全链路数据。
此外,本发明实施例的埋点采集器还能够获取调用时间,把请求发出、接收、处理的时间都记录下来,从而能够计算请求处理耗时和网络耗时。
本发明实施例采集的目标路径数据包括类名、方法名,将所采集的全链路数据与类名、方法名及业务参数相关联及结合,既能够满足软件服务的全流程埋点数据采集,同时也能够满足业务数据的捕获,完整兼顾了全流程跟踪和业务数据采集,能够形成基于业务及流程的端到端精准监控,可以根据需求,查看请求内部执行情况,一个完整的请求都经过了哪些服务、执行了哪些代码方法、哪些业务参数参与及每个方法的执行时间等详细信息,快速定位代码问题。
此外,在调用埋点采集器采集异步多线程的唯一标识的步骤之后还包括:将异步多线程的唯一标识添加至预定的日志工具的存储类中,调用日志工具的存储类,并输出访问请求的所有日志。
本发明实施例中,预定的日志工具可以是MDC(Mapped Diagnostic Context,映射调试上下文),MDC是log4j和logback提供的一种方便在多线程条件下记录日志的工具类,其中,log4j和logback是日志组件。存储类为ThreadLocal,ThreadLocal这个类可以共享线程内的数据。把异步多线程的唯一标识添加至ThreadLocal中,包括Traceid和Spanid,然后调用ThreadLocal,在java应用的调用链中输出日志时,就可以从ThreadLocal中获取到Traceid和Spanid,代码实现如下:
String traceId,spanid=threadLocal.get();
log.info("这里是打印信息{}",traceId,spanid)。
进一步地,以logback为例,在配置文件中,首先定义日志格式,输出的日志可以包含以下信息:日志输出的时间、线程、Traceid、Spanid、级别、哪个类输出的和具体输出信息。对于本实施例中的多线程处理服务的方案,需要使用额外的方法来传递存在TreadLocal里的值。MDC提供getCopyOfContextMap方法,该方法把当前线程TreadLocal绑定的id获取出来,之后把该id绑定到子线程中的ThreadLocal中,也就是说在主线程中获取MDC的id值,然后在子线程中设置进去,子线程对应的日志也会带有整个调用链共同的id。
本发明实施例可以结合JAVA框架,使用MDC功能获取本次接口调用线程中的Traceid和Spanid等日志链路所需参数,具有较好的兼容性。
本发明在上述实施例的基础上还提供另一较优实施例,其中,埋点采集器中还配置有推送地址,该实施例包括:
S101,终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
S102,基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
S103,基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数;
S107,将采集数据作为目标数据,所述采集数据包括业务参数、目标路径及所述异步多线程的唯一标识;
S108,将所述目标数据处理为消息队列,并推送所述消息队列至所述推送地址所在的云服务器。
其中,上述步骤S101-S103与上述实施例基本相同,此处不再赘述。
对于步骤S107-S108,推送地址为云服务器的地址,云服务器作为本发明实施例的数据收集平台,可以对数据进行持久化处理。推送机制可以为kafka推送,kafka有2个核心接口API,Producer API及Consumer API,Producer API用来让应用发送流数据到kafka集群中的主题,Consumer API用来让应用读取kafka集群主题中的流数据。在网络中发送数据都是以字节的方式,序列化器负责在Producer API发送消息前将其转换成字节数组,与之相反,解序列化器负责将Consumer API接收到的字节数组转换成相应的对象数据。producer发送流数据的主方法是send方法,在底层完全地实现了异步化发送,并且通过Java提供的Future功能同时实现了同步发送和异步发送+回调两种发送方式,对于异步发送,实际上所有的写入操作默认都是异步操作的,发送方法send会返回一个Java Future对象供用户稍后获取发送结果,这就是回调机制。本发明实施例将上述采集的全链路数据、类名、方法名及业务参数处理为kafka消息队列,将kafka消息队列推送至云服务器。此外,当采集数据的数据量大于预设数据量时,可以根据预设的发送策略进行发送,具体地,可以将目标数据首先缓存到了内存无锁队列,然后定时批量发送Kafka,例如每隔300ms发送一次,能够进行动态调控,防止数据拥堵而引发异常。
本发明在上述实施例的基础上还提供另一较优实施例,其中,埋点采集器中还配置有告警规则,在上述步骤S106之后还包括步骤S107-S109:
S107,调用所述埋点采集器采集所述访问请求的异常信息及所述多个服务分别对应的时间信息;
S108,基于所关联的目标路径、所述异步多线程的唯一标识及所述时间信息对所述多个服务进行异常监控;
S109,当检测到所述访问请求的异常信息或者所述多个服务的异常信息后,根据所述告警规则进行告警。
本发明实施例中,访问请求的异常信息包括类型转换异常(例如,当把一个方法归为某个类,但实际上此方法并不是由这个类创建的,也不是其子类创建的,则会引起类型转换异常)、方法的参数无效、非法改变线程状态、数据格式异常(例如,把一字符串非法转换成数值),等等,此外,埋点信息不正确也会引起异常,例如,埋点信息中的业务参数的名称与Java应用中相应的类及方法中对应的参数名称不一致,业务参数所处位置或顺序与Java应用中相应的类及方法中名称一致的参数所处位置或顺序不一致,也会引起异常。所有这些访问请求的异常信息都会被埋点采集器采集并缓存,通过这些异常信息,可以了解到一个访问请求执行情况,以便在发生异常时快速解决问题。
本发明实施例中,服务的时间信息包括每个服务的请求时间及响应时间、每个服务中的每个方法执行的时间,通过目标路径、异步多线程的唯一标识及时间信息,对整个业务及流程进行监控,例如,定时轮询上述信息,发现请求时间或响应时间或方法执行时间有异常的服务,以便及时定位。
当检测到访问请求或者服务的异常信息后,通过配置的告警规则进行告警,告警规则可以自定义配置,例如,一旦检测到访问请求的异常信息后都进行告警,针对服务,如服务的请求时间超过1秒、服务的响应时间超过3秒、最近3分钟内服务的平均响应时间超过3秒、最近3分钟内90%服务响应时间超过1秒,等等,当检测到服务的上述情况时,视为异常,此时可以进行告警。
此外,本发明实施例中,发送告警信息可以是以线程池异步的方式调用webhook接口完成,具体的webhook接口可以自行定义,从而可以在指定的webhook接口中编写各种告警方式,例如以短信、钉钉、邮件等方式发送告警信息。
本发明在上述实施例的基础上还提供另一较优实施例,在上述步骤S101终端运行Java应用对应的Java虚拟机的步骤之前,还包括以下步骤:
S201,获取Java虚拟机的样本数据,所述样本数据包括计算资源数据、存储资源数据、磁盘I/O资源数据、进程资源数据、网络性能数据中的一种或多种,每一种样本数据中包括已标记的正常数据及异常数据;
S202,将所述样本数据输入至预定的异常检测模型,在所述异常检测模型中采用预定的学习算法对所述样本数据进行训练;
S203,计算所述异常检测模型的检测准确率,当所述检测准确率大于预定的阈值后停止训练,得到标准异常检测模型;
在上述步骤S101终端运行Java应用对应的Java虚拟机的步骤之后,还包括以下步骤:
S204,采集所述Java虚拟机的待检测数据,将所述待检测数据输入所述标准异常检测模型中进行检测,获取所述标准异常检测模型输出的检测结果。
其中,计算资源数据包括花费在执行内核进程和用户进程上的CPU时间百分比、CPU空闲时间百分比、花费在响应I/O操作、进程切换和中断上的CPU时间等等,每个计算资源数据的取值都能从某个角度反映出Java虚拟机当前使用计算资源的情况。
存储资源数据包括总的物理内存大小、分配给Java虚拟机的内存大小、空闲物理内存大小、Java虚拟机内存使用率等等,每个存储资源数据都能从某个角度反映出Java虚拟机当前使用存储资源的情况。
磁盘I/O资源数据包括每次I/O操作的平均服务时间、等待时间、I/O操作的时间百分比、I/O读写次数等等,每个磁盘I/O资源数据都能从某个角度反映出Java虚拟机当前使用磁盘I/O资源的情况。
进程资源数据包括进程占用的总CPU时间、进程所占用内存的大小、所占用CPU时间的百分比和内存百分比、进程所包含的线程数等等,每个进程资源数据都能在一定程度上反映Java虚拟机当前的性能,CPU和内存占用率较高的进程一般是造成Java虚拟机异常的根源。
网络性能数据包括每秒接收和发送的数据包数、接收和发送过程丢失的数据包数、网络负载率、虚拟网络接收和发送的数据量等等,每个网络性能数据都能反映Java虚拟机当前网络资源的使用情况。
在本发明实施例中,每一种样本数据中包括已标记的正常数据及异常数据,对于计算资源数据,例如出现CPU计算资源不断消耗的异常情况,对应的计算资源数据为异常数据;对于存储资源数据,例如出现某一程序不断申请动态内存但不释放申请的内存的情况,即出现内存泄露故障,则对应的存储资源数据为异常数据;对于磁盘I/O资源数据,例如出现不断读取磁盘上的大文件,产生大量磁盘I/O行为,则对应的磁盘I/O资源数据为异常数据;对于网络性能数据,例如出现并发访问部署在Java虚拟机中的WEB服务器,生成大量的http链接,则对应的网络性能数据为异常数据。
在本发明实施例中,每一种样本数据构成相应的数据集,异常检测模型可以对一个或者多个数据集进行训练。
在获取样本数据后,可以对样本数据进行预处理,包括归一化处理、标准化处理等。对于预处理后的数据,采用预定的算法对预处理后的数据进行特征提取。预定的算法可以采用基于支持向量机SVM的特征选择算法IRFE,该算法能够在降低数据维度的同时保留原始数据的场合,当然预定的算法也可以采用其他的算法,例如有监督特征提取算法等。
将上述提取的特征数据输入异常检测模型中进行训练,异常检测模型中预先配置有相应的检测算法,本发明实施例中采用分类算法(如C-SVM)作为异常检测模型的检测算法,当然可以采用如聚类算法、最近邻算法等作为异常检测模型的检测算法。
训练后计算异常检测模型的检测准确率,例如,可以获取一些新的数据作为测试集来验证异常检测模型是否可以正式使用,将测试集输入异常检测模型中,获取输出的结果,输出的结果包括正常及异常,对输出的结果进行计算,如果检测准确率大于预定的阈值(例如,95%),则该异常检测模型可以作为标准异常检测模型进行使用。
本发明实施例中,在终端运行Java应用对应的Java虚拟机之后,可以采集Java虚拟机的待检测数据,待检测数据包括计算资源数据、存储资源数据、磁盘I/O资源数据、进程资源数据、网络性能数据中的一种或多种,标准异常检测模型如果已经训练了相应的数据集,则可以对对应的待检测数据进行检测。将待检测数据输入标准异常检测模型中进行检测,标准异常检测模型基于检测算法对待检测数据进行检测,输出待检测数据是正常还是异常的结果。
本发明实施例对于在集群中运行的多个Java虚拟机的情况,可以通过人工智能算法来检测每个Java虚拟机是否出现异常,通过模型中数据集的训练处理方式,能够对每个Java虚拟机是否出现异常进行全面检测。
本发明在上述实施例的基础上还提供另一较优实施例,在上述步骤S101之前还包括步骤S100,该实施例包括:
S100,调用Java虚拟机工具接口,对所述Java应用中预定的类文件进行加解密处理,得到解密后的类文件,将所述解密后的类文件封装成预定的文件,将所述预定的文件;
S101,终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
S102,基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
S103,基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数;
其中,上述步骤S101-S103与上述实施例基本相同,此处不再赘述。
对于步骤S100,在终端运行Java应用对应的Java虚拟机的步骤之前,可以调用Java虚拟机工具接口(JVM Tool Interface,JVMTI),对Java应用中预定的类文件进行加密处理,预定的类文件例如为关键技术的类文件,这些文件不希望对外暴露,因此需要进行加密处理。本发明实施例中,可以采用混淆器或者自定义类加载器来对class文件进行加密,加密后的class文件容易被反编译,因此会将加密后的class文件进行解密,解密后的class文件封装成预定的文件,例如.dll或.so文件,这些文件难以被反编译,最后将这些文件加载至Java虚拟机中运行。本发明实施例由于解密代码很难被破解,从而也就保护了上述加密的class文件,进而能有效提高信息的安全性。
如图4,本发明实施例还提供一种埋点数据的采集系统的技术框架,该技术框架包括应用服务层、Agent配置层、数据采集层、数据整理层及数据推送层。其中,在应用服务层中可以部署java应用,java应用在终端中运行。在Agent配置层中可以配置埋点信息,埋点信息包括待采集业务参数的参数名称及业务参数所在的参数路径,参数路径包括类名、方法名,此外,在Agent配置层中还可以配置其他的信息,如配置Jsonpath表达式,Jsonpath表达式用于获取Json文档中的业务参数,得到统一格式的数据;又如配置Kafka推送信息,推送信息包括推送地址,该推送地址为云服务器的地址,用于将采集的数据处理为Kafka消息队列并推送至云服务器中;又如配置日志路径,将生成的日志发送至该路径所在的空间中进行存储,等等,上述配置可以由用户进行自定义配置,也可以采用系统默认的配置。在数据采集层实现业务数据的自动采集,此外,还可以采集异步多线程的唯一标识,即链路数据,通过链路数据及类名、方法名、业务参数的关联结合,可以满足全链路流程跟踪和业务数据采集,实现基于业务及流程的端到端精准监控。在数据整理层,可以通过Jsonpath表达式获取Json文档中的业务参数,可以将采集的Xml格式的业务数据转化为Json格式。在数据推送层,将采集的数据处理为Kafka消息队列并推送至云服务器中。
如图5所示,本发明实施例还提供一种大数据系统500,该大数据系统500包括存储器54和处理器51,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时实现以下步骤:
终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数。
在实际应用中,上述大数据系统500还可以分别包含必要的其他元件,包含但不限于任意数量的输入装置52、输出装置53、处理器、控制器、存储器等,而所有可以实现本申请实施例的大数据管理方法的系统都在本申请的保护范围之内。
存储器包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read至only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read至only memory,CD至ROM),该存储器用于相关指令及数据。
输入装置52用于输入数据和/或信号,以及输出装置53用于输出数据和/或信号。输入装置52和输出装置53可以是独立的器件,也可以是一个整体的器件。
处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器还可以包括一个或多个专用处理器,专用处理器可以包括GPU、FPGA等,用于进行加速处理。
存储器用于存储网络设备的程序代码和数据。
处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程系统。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read至onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于大数据的数据采集方法,其特征在于,所述方法包括:
终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象,所述埋点采集器中配置有埋点信息,所述埋点信息包括待采集业务参数的参数名称及所述待采集业务参数所在的参数路径;
基于所述埋点监听对象监听所述Java虚拟机中当前被加载的路径是否与所述参数路径一致,将被加载且与所述参数路径一致的路径进行拦截,并作为目标路径;
基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数。
2.根据权利要求1所述的方法,其特征在于,所述埋点采集器中还配置有预定的采集表达式,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤之后,还包括:
将所采集的业务参数整理为预定格式的字符串,利用所述采集表达式获取所述预定格式的字符串中的业务参数。
3.根据权利要求1所述的方法,其特征在于,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤,包括:
基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径及所述目标路径中与所述参数名称一致的业务参数;
在终端运行Java应用对应的Java虚拟机的步骤之后,还包括:
若所述Java应用接收的访问请求包括多个服务,则采用异步多线程的方式处理所述多个服务,调用所述埋点采集器采集所述异步多线程的唯一标识;
关联所采集的目标路径及所述异步多线程的唯一标识。
4.根据权利要求3所述的方法,其特征在于,所述埋点采集器中还配置有推送地址,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤之后,还包括:
将采集数据作为目标数据,所述采集数据包括业务参数、目标路径及所述异步多线程的唯一标识;
将所述目标数据处理为消息队列,并推送所述消息队列至所述推送地址所在的云服务器。
5.根据权利要求3所述的方法,其特征在于,所述埋点采集器中还配置有告警规则,所述关联所采集的目标路径及所述异步多线程的唯一标识的步骤之后,还包括:
调用所述埋点采集器采集所述访问请求的异常信息及所述多个服务分别对应的时间信息;
基于所关联的目标路径、所述异步多线程的唯一标识及所述时间信息对所述多个服务进行异常监控;
当检测到所述访问请求的异常信息或者所述多个服务的异常信息后,根据所述告警规则进行告警。
6.根据权利要求1所述的方法,其特征在于,所述终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象的步骤之前,还包括:
获取Java虚拟机的样本数据,所述样本数据包括计算资源数据、存储资源数据、磁盘I/O资源数据、进程资源数据、网络性能数据中的一种或多种,每一种样本数据中包括已标记的正常数据及异常数据;
将所述样本数据输入至预定的异常检测模型,在所述异常检测模型中采用预定的学习算法对所述样本数据进行训练;
计算所述异常检测模型的检测准确率,当所述检测准确率大于预定的阈值后停止训练,得到标准异常检测模型;
所述终端运行Java应用对应的Java虚拟机,将预先配置的埋点采集器加载至所述Java虚拟机,并在加载过程中创建埋点监听对象的步骤之后,还包括:
采集所述Java虚拟机的待检测数据,将所述待检测数据输入所述标准异常检测模型中进行检测,获取所述标准异常检测模型输出的检测结果。
7.根据权利要求1所述的方法,其特征在于,所述将预先配置的埋点采集器加载至所述Java虚拟机的步骤,包括:
向所述Java虚拟机发送下载命令,基于所述下载命令调用Java虚拟机工具接口的预定方法,通过所述预定方法加载所述埋点采集器。
8.根据权利要求1所述的方法,其特征在于,所述基于预定的字节码生成操作库及所述埋点采集器,采集所述目标路径中与所述参数名称一致的业务参数的步骤,包括:
利用所述字节码生成操作库修改所述目标路径中对应的类代码,得到字节码文件;
加载所述字节码文件,并调用所述埋点采集器采集所述字节码文件中与所述参数名称一致的业务参数。
9.根据权利要求1所述的方法,其特征在于,所述终端运行Java应用对应的Java虚拟机的步骤之前,还包括:
调用Java虚拟机工具接口,对所述Java应用中预定的类文件进行加解密处理,得到解密后的类文件,将所述解密后的类文件封装成预定的文件,将所述预定的文件加载至所述Java虚拟机中运行。
10.一种大数据系统,其特征在于,所述大数据系统包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211618324.2A CN115934471A (zh) | 2022-12-15 | 2022-12-15 | 基于大数据的数据采集方法及大数据系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211618324.2A CN115934471A (zh) | 2022-12-15 | 2022-12-15 | 基于大数据的数据采集方法及大数据系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934471A true CN115934471A (zh) | 2023-04-07 |
Family
ID=86550135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211618324.2A Pending CN115934471A (zh) | 2022-12-15 | 2022-12-15 | 基于大数据的数据采集方法及大数据系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934471A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737514A (zh) * | 2023-08-15 | 2023-09-12 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
CN116954927A (zh) * | 2023-09-07 | 2023-10-27 | 建信住房服务有限责任公司 | 一种分布式异构数据采集方法、存储介质及电子设备 |
CN117827596A (zh) * | 2024-03-05 | 2024-04-05 | 大连高德瑞信科技有限公司 | 一种安全可控线程实时监控方法及系统 |
-
2022
- 2022-12-15 CN CN202211618324.2A patent/CN115934471A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737514A (zh) * | 2023-08-15 | 2023-09-12 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
CN116737514B (zh) * | 2023-08-15 | 2023-12-22 | 南京国睿信维软件有限公司 | 一种基于日志与探针解析自动化运维方法 |
CN116954927A (zh) * | 2023-09-07 | 2023-10-27 | 建信住房服务有限责任公司 | 一种分布式异构数据采集方法、存储介质及电子设备 |
CN116954927B (zh) * | 2023-09-07 | 2023-12-01 | 建信住房服务有限责任公司 | 一种分布式异构数据采集方法、存储介质及电子设备 |
CN117827596A (zh) * | 2024-03-05 | 2024-04-05 | 大连高德瑞信科技有限公司 | 一种安全可控线程实时监控方法及系统 |
CN117827596B (zh) * | 2024-03-05 | 2024-04-26 | 大连高德瑞信科技有限公司 | 一种安全可控线程实时监控方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115934471A (zh) | 基于大数据的数据采集方法及大数据系统 | |
US11507672B1 (en) | Runtime filtering of computer system vulnerabilities | |
US9811356B2 (en) | Automated software configuration management | |
US20170220448A1 (en) | Regression testing of software services | |
US9229758B2 (en) | Passive monitoring of virtual systems using extensible indexing | |
CN105278996A (zh) | 一种日志采集方法、装置及日志服务系统 | |
CN105184166A (zh) | 基于内核的安卓程序实时行为分析方法及系统 | |
CN110048907B (zh) | 一种集群环境下的全局流控方法及装置 | |
CN110062926B (zh) | 设备驱动器遥测 | |
US11449488B2 (en) | System and method for processing logs | |
US11934972B2 (en) | Configuration assessment based on inventory | |
US20130111018A1 (en) | Passive monitoring of virtual systems using agent-less, offline indexing | |
CN112559285A (zh) | 基于分布式服务架构的微服务监控方法及相关装置 | |
US20230214229A1 (en) | Multi-tenant java agent instrumentation system | |
CN116324773A (zh) | 用于保护智能合约免受攻击的方法和装置 | |
CN110457132B (zh) | 一种功能对象的创建方法、装置和终端设备 | |
WO2019168715A1 (en) | Event to serverless function workflow instance mapping mechanism | |
CN113094238A (zh) | 一种业务系统异常监控方法及装置 | |
US20230376610A1 (en) | Non-Intrusive Method of Detecting Security Flaws of a Computer Program | |
US20200117572A1 (en) | Problem diagnosis technique of memory corruption based on regular expression generated during application compiling | |
CN116700779A (zh) | 代码动态调整方法、装置、设备、介质和程序产品 | |
US10467082B2 (en) | Device driver verification | |
CN111309402A (zh) | 数据监测及针对应用程序的处理方法、装置及设备 | |
CN114598622A (zh) | 数据监控方法及装置、存储介质、计算机设备 | |
CN110716841A (zh) | 监控数据收集方法、装置及设备 |
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 |