CN113127241B - 日志抓取方法、装置、终端设备及可读存储介质 - Google Patents
日志抓取方法、装置、终端设备及可读存储介质 Download PDFInfo
- Publication number
- CN113127241B CN113127241B CN201911417224.1A CN201911417224A CN113127241B CN 113127241 B CN113127241 B CN 113127241B CN 201911417224 A CN201911417224 A CN 201911417224A CN 113127241 B CN113127241 B CN 113127241B
- Authority
- CN
- China
- Prior art keywords
- log
- logs
- grabbed
- grabbing
- target process
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0718—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0781—Error filtering or prioritizing based on a policy defined by the user or on a policy defined by a hardware/software module, e.g. according to a severity level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0787—Storage of error reports, e.g. persistent data storage, storage using memory protection
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请适用于计算机技术领域,提供了一种日志抓取方法、装置、终端设备及可读存储介质,该方法包括:响应日志抓取请求,确定目标进程中的待抓取日志,其中,日志抓取请求用于指示抓取所述目标进程中至少两个待抓取日志。通过多个线程分别抓取目标进程中的待抓取日志。对抓取到的日志进行去重处理,得到去重后的日志。由于抓取日志时,是通过多个线程同时抓取,因此抓取目标进程的日志时,可以同时抓取多个的日志,在超时时间内能够将所需的日志及时、完整的抓取,抓取速度快,效率高,并且在抓取后对日志去重,使得抓取到的日志能够更加准确地提供目标进程的相关信息。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种日志抓取方法、装置、终端设备及可读存储介质。
背景技术
在操作系统中,处理崩溃异常事件是系统的一项基本功能,是调试应用、定位崩溃原因的必须手段。崩溃主要分为两种:一是内核的崩溃(panic);另一种是用户程序的进程崩溃(crash)。其中,进程崩溃是影响用户体验的重要因素。在进程崩溃发生时,需要提取与进程崩溃相关的日志,以定位崩溃原因,收集崩溃信息。
现有主流操作系统中,抓取进程崩溃相关的日志时,往往采用的是串行的方式进行抓取,即依次抓取崩溃进程对应的日志、以及崩溃进程调用的进程对应的日志,并将抓取到的所有日志合并发送给服务器,为工程人员提供改进的参考。
然而,使用串行的方式抓取每个日志时,由于抓取时有时间限制,当相关的进程数量较多时,依次抓取会导致抓取速度较慢,在规定超时时长内可能无法完成所有崩溃日志的抓取,进而无法及时完整的获取进程崩溃的全部信息。
发明内容
本申请实施例提供了一种日志抓取方法、装置、终端设备及可读存储介质,可以改善在抓取日志时,串行抓取日志的抓取效率低,无法及时完整的获取进程崩溃的全部信息的问题。
第一方面,本申请实施例提供了一种日志抓取方法,在第一方面的一种可能的实现方式中,该方法包括:响应日志抓取请求,确定目标进程中的待抓取日志,其中,日志抓取请求用于指示抓取目标进程中至少两个待抓取日志,目标进程包括待抓取的主进程以及与主进程相关的调用进程。通过多个线程分别抓取目标进程中的待抓取日志。对抓取到的日志进行去重处理,得到去重后的日志。
还有一些实施方式中,每个线程上运行有日志采集器,其中,每个待抓取日志对应一个日志类型,每个日志采集器用于抓取对应类型的日志。
相应的,通过多个线程分别抓取目标进程中的待抓取日志,包括:通过与每个类型日志对应的日志采集器,抓取目标进程中对应类型的待抓取日志。
还有一些实施方式中,通过与每个类型日志对应的日志采集器,抓取目标进程中对应类型的日志,包括:确定待抓取日志中是否存在N个相同的日志,N个相同的日志的目标进程名相同且日志类型相同,其中,N为大于1的整数。若存在,则通过N个相同的日志中的第一日志对应的日志采集器抓取第一日志,并将第一日志返回给N个相同的日志中除第一日志以外的其他日志对应的日志采集器。对于待抓取日志中目标进程名和/或日志类型不相同的每个日志,通过每个日志对应的日志采集器抓取。
还有一些实施方式中,对多个类型的日志进行去重处理,包括:通过预设的哈希算法,获取每个抓取到的日志的哈希值。若存在哈希值相同的多个日志,则保留多个日志中的一个。
还有一些实施方式中,在对多个类型的日志进行去重处理之前,还包括:删除抓取到的日志中的无效日志。
还有一些实施方式中,在将去重后的日志存储在目标位置之后,还包括:将去重后的日志合并,得到合并的日志。将合并的日志发送给预设的日志收集设备。
第二方面,本申请实施例提供了一种日志抓取装置,在第二方面的一种可能的实现方式中,该装置包括:
确定模块,用于响应日志抓取请求,确定目标进程中的待抓取日志,其中,日志抓取请求用于指示抓取目标进程中至少两个待抓取日志。抓取模块,用于通过多个线程分别抓取目标进程中的待抓取日志。去重模块,用于对抓取到的日志进行去重处理,得到去重后的日志。
还有一些实施方式中,每个线程上运行有日志采集器,其中,每个待抓取日志对应一个日志类型,每个日志采集器用于抓取对应类型的日志。
抓取模块,具体用于通过与每个类型日志对应的日志采集器,抓取目标进程中对应类型的待抓取日志。
还有一些实施方式中,抓取模块,具体用于确定待抓取日志中是否存在N个相同的日志,N个相同的日志的目标进程名相同且日志类型相同,其中,N为大于1的整数。若存在,则通过N个相同的日志中的第一日志对应的日志采集器抓取第一日志,并将第一日志返回给N个相同的日志中除第一日志以外的其他日志对应的日志采集器。对于待抓取日志中目标进程名和/或日志类型不相同的每个日志,通过每个日志对应的日志采集器抓取。
还有一些实施方式中,去重模块,具体用于通过预设的哈希算法,获取每个抓取到的日志的哈希值。若存在哈希值相同的多个日志,则保留多个日志中的一个。
还有一些实施方式中,去重模块,还用于删除抓取到的日志中的无效日志。
还有一些实施方式中,该装置还包括发送模块,用于将去重后的日志合并,得到合并的日志。将合并的日志发送给预设的日志收集设备。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现第一方面任一项提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现第一方面任一项提供的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面任一项提供的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:响应日志抓取请求,先通过多个线程分别抓取目标进程的多个类型的日志。然后对多个类型的日志进行去重处理,并将去重后的日志存储在目标位置。由于抓取日志时,是通过多个线程同时抓取,因此抓取目标进程的日志时,可以同时抓取多个日志,在超时时间内能够将所需的日志及时、完整的抓取,抓取速度快,效率高,并且在抓取后对日志去重,使得抓取到的日志能够更加准确地提供目标进程的相关信息。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的日志抓取方法应用场景的示意图;
图2是本申请实施例提供的日志抓取方法应用场景的另一示意图;
图3是本申请一实施例提供的日志抓取方法的流程示意图;
图4是本申请另一实施例提供的日志抓取方法的流程示意图;
图5是本申请一实施例提供的日志抓取装置的结构示意图;
图6是本申请另一实施例提供的日志抓取装置的结构示意图;
图7是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
如在本申请说明书和所附权利要求书中所使用的那样,术语“若”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施方式”或“一些实施方式”等意味着在本申请的一个或多个实施方式中包括结合该实施方式描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施方式中”、“在一些实施方式中”、“在其他一些实施方式中”、“在另外一些实施方式中”等不是必然都参考相同的实施方式,而是意味着“一个或多个但不是所有的实施方式”,除非是以其他方式另外特别强调。
本申请实施例提供的日志抓取方法可以应用于运行各种操作系统的手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,操作系统的类型可以为窗口操作系统(Windows)、linux操作系统、苹果操作系统(MacOS)、苹果手机操作系统(iOS)或基于上述操作系统的其他操作系统如基于linux操作系统的安卓(Android)操作系统,本申请实施例对终端设备的具体类型以及其运行的操作系统不作任何限制。
以运行linux和以linux为基础的移动操作系统的终端设备为例。图1示出了本申请实施例提供的日志抓取方法应用场景的示意图。参考图1,在该场景中,包括故障记录器,故障记录器在操作系统中的形态可以为常驻的系统服务,如图示中的故障记录器守护进程,可以调用日志抓取模块、日志管理模块、历史记录模块、权限管理模块、并发控制模块等,以实现对日志的抓取、去重以及清除。
其中,日志抓取模块用于通过日志采集器从故障记录器实例中抓取故障日志;日志管理模块用于管理控制其他各个模块;历史记录模块用于记录每个模块的关键事件,如抓取成功、抓取失败等;权限管理模块用于管理请求方的日志请求权限,并发控制模块用于分配管理多个抓取线程。该场景的运行环境为linux操作系统,该操作系统中包括异常处理接口以及信号链,其中,异常处理接口可以接收内核的信号时间,并通过信号链与故障记录器交互,将内核的信号时间传递给故障记录器。
图2示出了本申请实施例提供的日志抓取方法应用场景的另一示意图,如图2所示,故障记录器中包括:
权限管理模块,用于管理请求方的权限,该权限用于确定是否允许请求方请求所需日志或请求方是否有权限添加相应日志。
请求管理模块,用于监听每个请求方发送的日志抓取请求,在确认请求方的权限可以请求所需日志后,在线程池内处理相应日志抓取请求。
并发管理模块,用于同时请求抓取的日志数量大于1时,通过线程池并发执行日志抓取,抓取完成后再合并日志。
日志抓取模块,用于通过日志采集器实现抓取日志。
配置管理模块,用于从默认配置中初始化当前默认的日志采集器,以确定日志采集器采集的日志类型,以及该日志采集器抓取日志时日志的保存路径、抓取周期、抓取权限、日志有效期等。
缓存管理模块,用于在每次请求到来时异步触发历史日志的清理,同时还用于监听抓取日志时存储的用量,在存储将满时,清理重复及无效的日志。
历史管理模块,用于将以上每个模块发生的关键事件记录,以备需要时调用,如进行失败改进分析或审计等。
图3示出了本申请提供的日志抓取方法的示意性流程图,作为示例而非限定,该方法可以应用于上述终端设备中,在此,以出现进程崩溃时,收集崩溃日志为例进行说明。
如图3所示,该方法包括:
S11、响应日志抓取请求,确定目标进程中的待抓取日志。
其中,日志抓取请求用于指示抓取目标进程中至少两个待抓取日志。
需要说明的是,目标进程分为主进程和调用进程,主进程为崩溃的用户程序对应的进程,而调用进程则为主进程调用的其他进程,例如,A程序发生崩溃,A程序在崩溃时,调用了B程序,则A程序对应的进程为主进程,B程序对应的进程为调用进程。
S12、通过多个线程分别抓取目标进程中的待抓取日志。
一些实施方式中,在抓取待抓取日志时,可以有多个故障记录器同时响应一个或多个日志抓取请求。例如,若一个日志抓取请求中,请求抓取的待抓取日志的数量远大于故障记录器的线程数,则可以通过多个故障记录器同时抓取,以保证抓取效率。或者,若同时受到两个日志抓取请求,则可以使用两个故障记录器分别响应两个日志抓取请求,在此不做限制。其中,每个故障记录器均可以设置一个线程池,线程池中包括了预设数量的待调用线程,当待抓取日志的数量大于1时,在线程池内并发执行日志抓取。
S13、对抓取到的日志进行去重处理,得到去重后的日志。
需要说明的是,由于并发抓取的日志可能存在重复,导致抓取的日志数据量大且无用,因此可以将重复的日志进行去重,以减少抓取到的日志的数据量,使其更易进行传递。
在本实施例中,响应日志抓取请求,先通过多个线程分别抓取目标进程的多个类型的日志。然后对多个类型的日志进行去重处理。由于抓取日志时,是通过多个线程同时抓取,因此抓取目标进程的日志时,可以同时抓取多个日志,在超时时间内能够将所需的日志及时、完整的抓取,抓取速度快,效率高,并且在抓取后对日志去重,使得抓取到的日志能够更加准确地提供目标进程的相关信息。
图4示出了本申请另一实施例提供的日志抓取方法的流程示意图。
如图4所示,本申请中的日志抓取方法的流程包括:
S21、响应日志抓取请求。
仅作为示例而非限制,请参考图1,在本实施例中,当用户程序发生崩溃时,用户程序子系统的异常处理接口将日志抓取请求发送给崩溃收集模块,崩溃收集模块再将日志抓取请求发送给故障记录器,请求抓取与崩溃进程相关的崩溃日志。
S22、确定待抓取日志。
其中,每个待抓取日志对应一个日志类型,日志类型包括基础日志和辅助日志,其中,可以将基础日志分为四类,辅助日志分为六类。基础日志包括信号信息日志、寄存器信息日志、调用栈信息日志、栈信息日志等。而辅助日志则包括内存信息日志、业务接入点(Service Management Access Point,SMAP)信息日志、进程间通信(Inter-ProcessCommunication,IPC)调用信息日志、版本信息日志、环境信息日志、崩溃原因信息日志等。
一些实施方式中,参考S21,当用户程序发生崩溃时,日志抓取请求指示的待抓取日志往往需要提供用户程序崩溃时的相关信息。因此,根据日志抓取请求,需要先确定要抓取日志的目标进程,再确定目标进程中哪几类的日志需要抓取。例如,当网络电话(skype)发生崩溃时,首先可以确定抓取skype主程序进程中的信号信息日志、寄存器信息日志、调用栈信息日志、栈信息日志等。同时,若skype还调用了其他进程,如通过skype在进行视频通话时,还要调用拍摄进程、语音进程等,则确定还需抓取调用的进程中的多个类型的待抓取日志,如拍摄进程中的信号信息日志,语音进程中的信息号信息日志等,为分析程序崩溃的原因提供数据,具体抓取的日志类型在此不做限制,以实际应用时的需求为准。
需要说明的是,以上的信号信息日志、寄存器信息日志、调用栈信息日志、栈信息日志、内存信息日志、SMAP信息日志、IPC调用信息日志、版本信息日志、环境信息日志以及崩溃原因信息日志,均可使用现有的技术获取,不以此为限。
在此,仅作为示例而非限制,以信号信息日志、寄存器信息日志、调用栈信息日志的获取方式为例,进行说明,
信号信息日志可以是在崩溃(crash)进程中,从查询信号处理方式的函数(例如,sigaction函数)的输入参数(Input Parameter)中读取的信号信息。
一些实施方式中,可以通过系统调用(ptrace)函数从sigaction函数的输入参数中调取信号信息。例如,通过ptrace函数获取目标进程的信号信息,若返回值为0,则表明成功获取,得到信号信息日志;若返回值不为0,说明获取失败,此时需要记录获取失败的错误值,并返回调用失败信息。
而寄存器信息日志,也可以通过ptrace函数调取。例如,先预分配用于保存寄存器信息结构体的空间和用于跨进程通信的向量。分配好后,可以确定寄存器信息结构体空间中寄存器结构的地址和该寄存器结构的大小。将该向量指向的基地址设置为上述寄存器结构的地址,然后将该向量传送的通信内容的长度设置为上述寄存器结构的大小。最后通过ptrace函数调用获取目标线程的寄存器信息,并通过跨进程通信的向量传递并保存到预分配的寄存器信息结构体的空间中,得到寄存器信息日志。
对于调用栈信息日志,则可以直接使用ptrace调取获得调用栈信息,若获取失败,返回调用失败信息。
在另一些实施方式中,还可以对每种类型的日志设置优先级,例如,可以将信号信息日志的优先级设置为最高,寄存器信息日志、调用栈信息日志、栈信息日志、内存信息日志、SMAP信息日志、IPC调用信息日志、版本信息日志、环境信息日志以及崩溃原因信息日志的优先级依次降低。同时,为了保证抓取到日志的数据量大小更易于传递,可以为不同类型的日志设置大小限制,例如,由于基础日志较为重要,可以不限基础日志的大小,然后将辅助日志中每类日志的大小限制为20KB,但不以此为限。
S23、确定待抓取日志中是否存在N个相同的日志,若存在,执行S24,若不存在,则执行S26。
一些实施方式中,需要确认待抓取日志中是否存在N个相同的日志,确定相同的日志时,可以先获取目标进程的进程名,若N个待抓取日志对应目标进程的进程名相同,且待抓取日志的类型相同,则确认这N个待抓取日志为相同的日志,N为大于1的整数。例如,对于运行安卓系统的智能手机,存在A进程、B进程和C进程,第一故障记录器需要在A进程、B进程、C进程上分别抓取调用栈信息日志,第二故障记录器需要在B进程上抓取调用栈信息日志,则B进程上的调用栈信息日志为相同的日志。
S24、抓取N个相同日志中的一个。
一些实施方式中,抓取待抓取日志,可以通过线程上运行的日志采集器,每个日志采集器对应一个类型的日志,可以抓取对应类型的日志,日志采集器预设有每个类型日志的抓取日志默认保存路径、抓取周期、抓取权限、日志有效期等信息,对于出现N个相同的日志时,只有一个日志采集器只抓取该日志。然后,将抓取到的日志返回给其他每个对应的日志采集器。
S25、分别抓取不相同的日志,执行S27。
其中,S24和S25可以同时进行,在一些实施方式中,参考S23中的示例,可以只通过第一故障记录器中的3个日志采集器,分别抓取A进程、B进程、C进程上的调用栈信息日志,然后将B进程的调用栈信息日志同时返回给第二故障记录器中,用于采集B进程调用栈信息日志的日志采集器,或者,也可以通过第一故障记录器中的2个日志采集器抓取A进程、C进程上的调用栈信息日志,通过第二故障记录器的日志采集器抓取B进程上的调用栈信息日志,然后将B进程的调用栈信息日志同时返回给第一故障记录器中,用于采集B进程调用栈信息日志的日志采集器,在此不做限制。
S26、若不存在,则通过多个线程分别抓取目标进程中的待抓取日志,执行S27。
还有一些实施方式中,不存在相同的日志,则可以通过不同的日志采集器分别抓取每个待抓取日志,该日志采集器与S24中的相同,在此不做赘述。
S27、确定抓取到的日志中是否存在重复日志和/或无效日志,若存在,执行S28,若不存在,执行S29。
仅作为示例而非限制,可以根据进程名,计算调用栈存放的日志中的第一行关键字的元哈希值(metahash),若两份日志的metahash相同,则确定这两份日志为重复日志。其中,计算metahsh的方法为本领域技术人员的常用手段,在此不做赘述。
需要说明的是,无效日志可以包括空日志,即不存在任何内容的日志,或者日志内容为乱码等,从无效日志中无法获取有效的数据内容,无效日志的类型在此不做限制。
S28、若存在多个重复日志和/或无效日志,则对抓取到的进行去重并删除无效日志,执行S29。
一些实施方式中,当存在多个上述的重复日志时,保留多个重复日志中的一个。,同时,当存在上述的无效日志时,删除所有无效日志,以减小抓取到的日志的体积。
S29、将日志合并发送。
还有一种可能的实施方式中,可以将去重后的日志合并,得到合并的日志。然后将合并的日志发送给预设的日志收集设备,其中,预设的日志收集设备可以是用于收集日志的服务器、存储器等,在此不做限制。
由于在本申请中,可以直接从目标进程中抓取日志,无需依靠操作系统的异常捕获进程,使得抓取日志与操作系统解耦,可以适用于各内核的操作系统上,适用面更广。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的日志抓取方法,图5示出了本申请实施例提供的日志抓取装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,日志抓取装置包括:
确定模块31,用于响应日志抓取请求,确定目标进程中的待抓取日志,其中,日志抓取请求用于指示抓取目标进程中至少两个待抓取日志。抓取模块32,用于通过多个线程分别抓取目标进程中的待抓取日志。去重模块33,用于对抓取到的日志进行去重处理,得到去重后的日志。
还有一些实施方式中,每个线程上运行有日志采集器,其中,每个待抓取日志对应一个日志类型,每个日志采集器用于抓取对应类型的日志。
抓取模块32,具体用于通过与每个类型日志对应的日志采集器,抓取目标进程中对应类型的待抓取日志。
还有一些实施方式中,每个线程上运行有日志采集器,其中,每个日志采集器对应一个类型的日志,用于抓取对应类型的日志。
抓取模块32,具体用于通过与每个类型日志对应的日志采集器,抓取目标进程中对应类型的待抓取日志。
还有一些实施方式中,抓取模块32,具体用于确定待抓取日志中是否存在N个相同的日志,N个相同的日志的目标进程名相同且日志类型相同,其中,N为大于1的整数。若存在,则通过N个相同的日志中的第一日志对应的日志采集器抓取第一日志,并将第一日志返回给N个相同的日志中除第一日志以外的其他日志对应的日志采集器。对于待抓取日志中目标进程名和/或日志类型不相同的每个日志,通过每个日志对应的日志采集器抓取。
还有一些实施方式中,去重模块33,具体用于通过预设的哈希算法,获取每个抓取到的日志的哈希值。若存在哈希值相同的多个日志,则保留多个日志中的一个。
还有一些实施方式中,去重模块33,还用于删除抓取到的日志中的无效日志。
图6示出了本申请实施例提供的日志抓取装置的结构示意图。
还有一些实施方式中,请参照图6,该装置还包括发送模块34,用于将去重后的日志合并,得到合并的日志。将合并的日志发送给预设的日志收集设备。
需要说明的是,上述装置中,各模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
如图7所示,终端设备4包括存储器42、处理器41以及存储在存储器42中并可在处理器41上运行的计算机程序43,处理器41执行计算机程序43时实现上述的日志抓取方法。
处理器41可以是中央处理单元(Central Processing Unit,CPU),该处理器41还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field与Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器42在一些实施例中可以是终端设备4的内部存储单元,例如终端设备4的硬盘、闪存或内存。存储器42在另一些实施例中也可以是终端设备4的外部存储设备,例如终端设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器42还可以既包括终端设备4的内部存储单元也包括外部存储设备。存储器42用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序43的程序代码、视频等。存储器42还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (7)
1.一种日志抓取方法,其特征在于,包括:
响应日志抓取请求,确定目标进程中的待抓取日志,其中,所述日志抓取请求用于指示抓取所述目标进程中至少两个待抓取日志;
通过多个线程分别抓取所述目标进程中的待抓取日志;
对抓取到的日志进行去重处理,得到去重后的日志;
每个所述线程上运行有日志采集器,其中,每个所述待抓取日志对应一个日志类型,每个所述日志采集器用于抓取对应类型的日志;
所述通过多个线程分别抓取所述目标进程中的待抓取日志,包括:
通过与每个类型日志对应的日志采集器,抓取所述目标进程中对应类型的待抓取日志;
所述通过与每个类型日志对应的日志采集器,抓取所述目标进程中对应类型的待抓取日志,包括:
确定所述待抓取日志中是否存在N个相同的日志,所述N个相同的日志的目标进程名相同且日志类型相同,其中,N为大于1的整数;
若存在,则通过所述N个相同的日志中的第一日志对应的日志采集器抓取所述第一日志,并将所述第一日志返回给所述N个相同的日志中除所述第一日志以外的其他日志对应的日志采集器;
对于所述待抓取日志中目标进程名和/或日志类型不相同的每个日志,通过所述每个日志对应的日志采集器抓取。
2.根据权利要求1所述的方法,其特征在于,所述对抓取到的日志进行去重处理,包括:
通过预设的哈希算法,获取每个所述抓取到的日志的哈希值;
若存在哈希值相同的多个日志,则保留所述多个日志中的一个。
3.根据权利要求1或2所述的方法,其特征在于,在对抓取到的日志进行去重处理之前,还包括:
删除所述抓取到的日志中的无效日志。
4.根据权利要求1或2所述的方法,其特征在于,在得到去重后的日志之后,还包括:
将所述去重后的日志合并,得到合并后的日志;
将所述合并后的日志发送给预设的日志收集设备。
5.一种日志抓取装置,其特征在于,包括:
确定模块,用于确定目标进程中的待抓取日志,其中,日志抓取请求用于指示抓取所述目标进程中至少两个待抓取日志;
抓取模块,用于通过多个线程分别抓取所述目标进程中的待抓取日志;
去重模块,用于对抓取到的日志进行去重处理,得到去重后的日志;
每个所述线程上运行有日志采集器,其中,每个所述待抓取日志对应一个日志类型,每个所述日志采集器用于抓取对应类型的日志;
所述抓取模块,具体用于确定待抓取日志中是否存在N个相同的日志,N个相同的日志的目标进程名相同且日志类型相同,其中,N为大于1的整数;若存在,则通过N个相同的日志中的第一日志对应的日志采集器抓取第一日志,并将第一日志返回给N个相同的日志中除第一日志以外的其他日志对应的日志采集器;对于待抓取日志中目标进程名和/或日志类型不相同的每个日志,通过每个日志对应的日志采集器抓取。
6.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述的方法。
7.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911417224.1A CN113127241B (zh) | 2019-12-31 | 2019-12-31 | 日志抓取方法、装置、终端设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911417224.1A CN113127241B (zh) | 2019-12-31 | 2019-12-31 | 日志抓取方法、装置、终端设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127241A CN113127241A (zh) | 2021-07-16 |
CN113127241B true CN113127241B (zh) | 2023-08-22 |
Family
ID=76769783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911417224.1A Active CN113127241B (zh) | 2019-12-31 | 2019-12-31 | 日志抓取方法、装置、终端设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127241B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330151B1 (en) * | 2013-03-08 | 2016-05-03 | Emc Corporation | Database change data capture within a storage array |
CN107102795A (zh) * | 2017-05-31 | 2017-08-29 | 努比亚技术有限公司 | 一种日志记录方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN108920275A (zh) * | 2018-06-25 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种抓取黑盒日志的方法、装置、设备及计算机存储介质 |
CN109902068A (zh) * | 2019-02-15 | 2019-06-18 | 广州视源电子科技股份有限公司 | 一种抓取家电设备日志的方法、装置以及计算机可读存储介质 |
-
2019
- 2019-12-31 CN CN201911417224.1A patent/CN113127241B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330151B1 (en) * | 2013-03-08 | 2016-05-03 | Emc Corporation | Database change data capture within a storage array |
CN107102795A (zh) * | 2017-05-31 | 2017-08-29 | 努比亚技术有限公司 | 一种日志记录方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN108920275A (zh) * | 2018-06-25 | 2018-11-30 | 郑州云海信息技术有限公司 | 一种抓取黑盒日志的方法、装置、设备及计算机存储介质 |
CN109902068A (zh) * | 2019-02-15 | 2019-06-18 | 广州视源电子科技股份有限公司 | 一种抓取家电设备日志的方法、装置以及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113127241A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073770B2 (en) | Scheme for determining data object usage in a memory region | |
US11593107B2 (en) | Handling an input/output store instruction | |
CN112017323B (zh) | 一种巡检报警方法、装置、可读存储介质及终端设备 | |
CN116719870A (zh) | 一种时序数据库集群的数据管理方法、装置、设备及介质 | |
US9916220B2 (en) | Smart logging of trace data for storage systems | |
US20220253524A1 (en) | Malware Detection System | |
CN118250206A (zh) | 基于流量回放的高并发压测试方法及相关装置 | |
US9122402B2 (en) | Increasing efficiency of block-level processes using data relocation awareness | |
CN112667371B (zh) | 异步任务的处理方法、装置、设备及存储介质 | |
CN113127241B (zh) | 日志抓取方法、装置、终端设备及可读存储介质 | |
CN103942123B (zh) | 一种反向数据抓取实现云容灾备份的方法及系统 | |
CN109800184B (zh) | 针对小块输入的缓存方法、系统、装置及可存储介质 | |
CN113966590B (zh) | 一种站点会话终止方法、装置、终端设备及介质 | |
CN116107988A (zh) | 车载日志系统、车载日志存储方法、设备、介质及车辆 | |
US11977636B2 (en) | Storage transaction log | |
CN113850664A (zh) | 一种数据异常检测方法及数据上报服务 | |
CN113268518B (zh) | 流量统计方法及装置、分布式流量统计系统 | |
CN113900743A (zh) | 一种Java对象访问的方法和装置 | |
CN113485872A (zh) | 故障处理方法、装置及分布式存储系统 | |
CN113760988A (zh) | 一种无界流数据关联处理方法、装置、设备及存储介质 | |
CN108959405B (zh) | 数据的强一致性读取方法及终端设备 | |
CN115525662A (zh) | 保障数据一致性的处理方法、装置及相关设备 | |
CN111639936A (zh) | 交易信息的获取方法、装置、电子设备及可读存储介质 | |
CN117056363B (zh) | 数据缓存方法、系统、设备以及存储介质 | |
CN117472296B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |