一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种日志数据的处理方法以及装置与流程

2022-12-13 21:13:12 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种日志数据的处理方法以及装置。


背景技术:

2.在应用程序(application,app)的运行过程中,会产生日志数据。日志数据是一种重要的运维数据,运维工程师利用日志数据进行异常检测和故障诊断。因此,日志数据会被统一收集和存储。具体的,日志数据在产生后首先被写到本地存储介质,日志采集程序中会预先配置有需要收集的多个日志数据所对应的文件路径,日志采集程序根据预先配置的文件路径读取日志数据,并将读取到的日志数据发送给远端的数据库,这个过程中会产生大量的读/写(input/output,i/o)操作。
3.为了减少对本地存储介质执行读取操作的次数,目前采用的方式为对需要监控的目标应用程序的代码进行修改,也即对需要监控的目标应用程序的代码具有一定的侵入性,在目标应用程序产生日志数据之后,会触发直接将日志数据发送给远端的数据库。
4.但由于上述方案中,需要对目标应用程序的代码进行修改,且不同的应用程序所兼容的代码修改的方案可能不同,还增加了整个代码修改过程的难度。因此,一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案亟待推出。


技术实现要素:

5.本技术提供了一种日志数据的处理方法以及装置,提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
6.为解决上述技术问题,本技术提供以下技术方案:
7.第一方面,本技术提供一种日志数据的处理方法,可用于计算机技术的程序代码领域中,方法包括:电子设备通过第一扩展伯克利包过滤器ebpf程序从至少一个写入(write)类型的系统调用中确定目标系统调用,其中,目标系统调用所对应的操作为将日志数据写入本地存储介质;目标系统调用为目标应用程序发起的写入类型的系统调用,目标应用程序为需要获取日志数据的应用程序,也即目标应用程序为需要监控的应用程序。进一步地,电子设备的操作系统提供一系列具备预定功能的内核函数,通过一组称为系统调用(system call)的接口呈现给用户;电子设备中的应用程序可以发起系统调用,以把请求传递给操作系统,操作系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序;作为示例,例如写入(write)类型的系统调用就属于文件读写类的系统调用。电子设备获取目标系统调用所对应的日志数据的目标存储地址,并根据目标存储地址,获取目标系统调用所对应的日志数据;其中,目标存储地址用于指示在目标系统调用中该日志数据的读取地址,换言之,目标存储地址用于指示该日志数据在生成之后且被写入至本地存储介质之前的存储地址,目标存储地址可以基于目标系统调用得到,作为示例,例如目标存储地址可以用于指示目标系统调用所对应的日志数据在内存中的存储地址。
8.本实现方式中,通过ebpf程序获取写入类型的系统调用,当发现某个写入类型的系统调用是由正在监控的目标应用程序发起的,且该写入类型的系统调用的目的是将日志数据写入本地存储介质时,就直接根据目标存储地址来获取目标系统调用所对应的日志数据,由于目标存储地址用于指示在目标系统调用中该日志数据的读取地址,也即目标存储地址不是日志数据在本地存储介质中的地址,避免了在日志数据的获取过程中对本地存储介质执行读取操作,减少了对本地存储介质执行读取操作的次数,且不再需要等日志数据写入本地存储介质后再读取该日志数据,能够缩短整个日志数据读取过程的时长,提高整个日志数据读取过程的效率;此外,通过前述描述可知,本方案中不需要更改被监控的目标应用程序的代码,也即提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
9.在第一方面的一种可能实现方式中,方法还可以包括:电子设备中的第二ebpf程序读取第一指示信息,并将第一指示信息传输给第一ebpf程序;电子设备中的第一ebpf程序根据第一指示信息,从电子设备配置的多个应用程序中确定需要获取日志数据的至少一个目标应用程序。其中,第一指示信息可以包括以下一种或多种信息:每个目标应用程序的标识、与至少一个目标应用程序对应的至少一个目标容器的标识、与至少一个目标应用程序对应的目标命名空间(namespace)的标识或其他能够协助电子设备确定目标应用程序的信息等等;命名空间也可以称为“名称空间”或“名字空间”。第一ebpf程序为运行于内核空间中的ebpf程序,第二ebpf程序为运行于用户空间的ebpf程序;进一步地,若某一应用程序运行在内核空间中,可以执行任何指令,运行的代码也不受任何的限制,可以自由地访问任何有效地址,也可以直接进行端口的访问;若某一应用程序运行在用户空间中,被执行的代码要受到诸多检查,它们只能访问预先规定的在用户态下可访问页面的虚拟地址,且只能对预先规定的可访问端口进行直接访问。
10.在第一方面的一种可能实现方式中,第一指示信息为可更新的。
11.在第一方面的一种可能实现方式中,电子设备通过第一ebpf程序从至少一个写入(write)类型的系统调用中确定目标系统调用,可以包括:电子设备通过第一ebpf程序获取写入类型的系统调用所对应的第一进程标识pid和第一文件标识符fd;在第一pid为与目标应用程序对应的进程标识,且第一fd指向的文件为日志文件的情况下,也即在第一pid所标识的进程为目标应用程序发起的进程,且第一fd指向的文件为日志文件的情况下,将与第一pid对应的写入类型的系统调用确定为目标系统调用。
12.本实现方式中,由于目标应用程序写入日志文件的地址可能会发生变化,根据写入类型的系统调用所对应的进程标识和文件标识符,确定某个写入类型的系统调用是否为目标系统调用,相对于根据写入类型的系统调用所对应的文件路径,确定某个写入类型的系统调用是否为目标系统调用,使得目标系统调用的判断过程更为精确,也即能够适应动态多变的运行环境,扩展了本方案的应用场景,使得日志数据的获取过程更为灵活。
13.在第一方面的一种可能实现方式中,电子设备通过第一ebpf程序获取写入类型的系统调用所对应的第一进程标识和第一文件标识符可以包括:电子设备通过第一ebpf程序,采用kprobe技术、kretprobe技术、跟踪点(tracepoints)技术或其他拦截技术,以获取写入类型的系统调用所对应的第一进程标识和第一文件标识符,kprobe技术和kretprobe技术为一种动态的拦截技术,tracepoints技术为一种静态的拦截技术。
14.在第一方面的一种可能实现方式中,若采用kprobe技术和kretprobe技术获取与一个写入类型的系统调用对应的第一进程标识pid和第一文件标识符fd,则电子设备中的第一ebpf程序先采用kprobe技术获取写入类型的系统调用中携带的参数,前述参数包括写入类型的系统调用所对应的第一pid和文件名;电子设备中的第一ebpf程序再采用kretprobe技术获取写入类型的系统调用所对应的返回值,前述返回值包括写入类型的系统调用所对应的第一fd。
15.在第一方面的一种可能实现方式中,方法还可以包括:电子设备的第一ebpf程序判断与写入类型的系统调用对应的第一进程标识是否为与目标应用程序对应的进程标识。具体的,电子设备的第一ebpf程序获取每个目标应用程序的名称,第一ebpf程序获取第一pid中的命令行,前述命令行中记录有写入类型的系统调用所对应的应用程序的名称;第一ebpf程序根据前述命令行,判断第一pid是否为与目标应用程序对应的进程标识。
16.在第一方面的一种可能实现方式中,方法还可以包括:电子设备的第一ebpf程序判断与写入类型的系统调用对应的第一pid是否为与目标应用程序对应的pid。具体的,若电子设备采用容器技术运行进程。则第一ebpf程序还可以根据第一指示信息,获取与需要日志数据的目标应用程序所对应的至少一个目标容器的标识,根据所有目标容器的标识,获取所有目标容器所对应的容器描述信息,容器描述信息中会携带有与目标应用程序对应的pid,则第一ebpf程序可以获取到所有目标应用程序对应的pid集合。第一ebpf程序判断第一pid是否包含于前述pid集合,若前述判断的判断结果为是,则确定第一pid为与目标应用程序对应的进程标识;若前述判断的判断结果为否,则确定第一pid不是与目标应用程序对应的进程标识。
17.在第一方面的一种可能实现方式中,电子设备获取目标系统调用所对应的日志数据可以包括:电子设备通过第一ebpf程序将目标系统调用所对应的日志数据写入ebpf映射信息(maps);通过第二ebpf程序读取ebpf maps中存储的日志数据,并向外部存储设备发送读取到的日志数据。其中,第一ebpf程序为运行于内核空间中的ebpf程序,第二ebpf程序为运行于用户空间的ebpf程序;ebpf maps可以被翻译为ebpf映射信息、ebpf键值存储。
18.本实现方式中,利用ebpf maps机制,第一ebpf程序将日志数据从内核空间传输至位于用户空间的第二ebpf程序,以通过第二ebpf程序向外部存储设备发送该日志数据,ebpf maps能同时被第一ebpf程序和第二ebpf程序访问,前述方式简单易于操作,且稳定高效。
19.在第一方面的一种可能实现方式中,在电子设备确定第三系统调用(也即多个写入类型的系统调用中的任一个系统调用)为目标系统调用之后,还可以通过调用第二辅助函数,以阻止操作系统将第三系统调用所对应的日志数据写入到本地存储介质。本实现方式中,通过前述步骤,能够避免了整个日志数据读取过程中对本地存储介质的写入操作,以进一步降低本地计算机资源的消耗。
20.在第一方面的一种可能实现方式中,方法还可以包括:电子设备通过第一ebpf程序获取打开(open)类型的系统调用所对应的第二进程标识pid和第二文件标识符fd;在第二pid为与目标应用程序对应的pid(也即第二pid为目标应用程序发起的pid)的情况下,将第二pid写入ebpf maps;在第二pid为与目标应用程序对应的pid,且第二fd指向的文件为日志文件的情况下,将第二fd写入ebpf maps。电子设备通过第一ebpf程序获取写入类型的
系统调用所对应的第一进程标识pid和第一文件标识符fd之后,若ebpf maps存储的至少一个第二pid中包括该第一pid,且ebpf maps存储的至少一个第二fd中包括该第一fd,则确定第一pid为与目标应用程序对应的pid,且第一fd指向的文件为日志文件。
21.本实现方式中,基于多个open类型的系统调用,筛选出与目标应用程序对应的多个第二pid,以及与目标应用程序对应、且指向文件为日志文件的多个第二fd,将前述筛选出的多个第二pid和多个第二fd写入ebpf maps中,第一ebpf程序可以借助ebpf maps,从多个write类型的系统调用中筛选出目标系统调用;由于向一个文件中写入数据之前,一定需要先打开该文件,且打开该文件一次之后,可以向该文件写入多次数据,因此,借助于open类型的系统调用和ebpf maps来执行目标系统调用的筛选步骤,有利于提高前述筛选步骤的效率。
22.在第一方面的一种可能实现方式中,目标存储地址包括在目标系统调用中该日志数据的读取地址和日志数据的长度;进一步地,目标系统调用中可以携带有缓冲区(buffer)指针和数量(count)参数,buffer指针用于指示目标系统调用所对应的日志数据在内存中的起始读取地址,count参数用于指示日志数据的长度。需要说明的是,目标存储地址还可以用于指示该日志数据的中间数据的读取地址,或者目标存储地址用于指示该日志数据的结束位置的读取地址,或者,目标存储地址用于指示该日志数据中任意一个数据的读取地址等。电子设备中的第一ebpf程序根据目标存储地址,获取目标系统调用所对应的日志数据,可以包括:第一ebpf程序根据在目标系统调用中该日志数据的读取地址和日志数据的长度,获取目标系统调用所对应的日志数据;进一步地,第一ebpf程序可以根据目标系统调用中携带的buffer指针和count参数,获取目标系统调用所对应的日志数据。
23.本实现方式中,从写入类型的系统调用中获取该日志数据的读取地址和日志数据的长度,也即获取到日志数据在内存中的读取地址以及日志数据的长度,提供了从目标存储地址处直接复制数据的一种具体实现方案。
24.第二方面,本技术提供了一种日志数据的处理装置,可用于计算机技术的程序代码领域中。日志数据的处理装置可以包括:确定模块,用于通过第一扩展伯克利包过滤器ebpf程序从至少一个写入(write)类型的系统调用中确定目标系统调用,其中,目标系统调用所对应的操作为将日志数据写入本地存储介质,目标系统调用为目标应用程序发起的写入类型的系统调用;获取模块,用于获取目标系统调用所对应的日志数据的目标存储地址,目标存储地址用于指示在目标系统调用中日志数据的读取地址;获取模块,还用于根据目标存储地址,获取目标系统调用所对应的日志数据。
25.对于本技术第二方面中,日志数据的处理装置还用于执行第一方面中电子设备执行的其它步骤,第二方面的各种可能实现方式的具体实现步骤,以及每种可能实现方式所带来的有益效果,均可以参考第一方面中各种可能的实现方式中的描述,此处不再一一赘述。
26.第三方面,本技术提供了一种电子设备,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面所述的方法。
27.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面所
述的方法。
28.第五方面,本技术提供了一种计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面所述的方法。
29.第六方面,本技术提供了一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行上述第一方面所述的方法。
30.第七方面,本技术提供了一种芯片系统,该芯片系统包括处理器,用于支持实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存服务器或通信设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
31.图1为本技术实施例提供的日志数据的处理方法的一种流程示意图;
32.图2为本技术实施例提供的日志数据的处理方法的另一种流程示意图;
33.图3为本技术实施例提供的日志数据的处理方法中第一指示信息中目标应用程序的标识信息的添加过程的一种示意图;
34.图4为本技术实施例提供的日志数据的处理方法中第一指示信息中目标应用程序的标识信息的删除过程的一种示意图;
35.图5为本技术实施例提供的日志数据的处理方法中装载第一ebpf程序的一种流程示意图;
36.图6为本技术实施例提供的日志数据的处理方法中判断第三系统调用是否为目标系统调用的一种示意图;
37.图7为本技术实施例提供的日志数据的处理方法的另一种流程示意图;
38.图8a为本技术实施例提供的日志数据的处理方法所带来的有益效果的一种示意图;
39.图8b为本技术实施例提供的日志数据的处理方法所带来的有益效果的另一种示意图;
40.图9为本技术实施例提供的日志数据的处理装置的一种结构示意图;
41.图10为本技术实施例提供的日志数据的处理装置的另一种结构示意图;
42.图11是本技术实施例提供的电子设备一种结构示意图;
43.图12是本技术实施例提供的电子设备另一种结构示意图。
具体实施方式
44.本技术的说明书和权利要求书及上述附图中的术语“第一”、第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
45.下面结合附图,对本技术的实施例进行描述。本领域普通技术人员可知,随着技术
的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
46.本技术实施例可以应用于获取应用程序的日志数据的应用场景中,具体的,前述应用场景可以包括采用容器技术来运行进程的应用场景,也包括不采用容器技术来运行进程的应用场景。前述应用程序具体可以表现为任意类型的应用程序,作为示例,例如上述应用程序包括但不限于游戏类的应用程序、通信类的应用程序、地图导航类的应用程序、视频类应用程序等等,此处不做限定。每种应用程序在运行过程中会产生日志数据,日志数据是一种种重要的运维数据源,运维工程师利用日志数据进行异常检测和故障诊断,定位出应用程序中的故障代码,因此应用程序运行过程中产生的日志数据会被统一收集和存储。
47.为了能够在获取日志数据的过程中,既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改。本技术实施例提供了一种日志数据的处理方法,具体的,请参阅图1,图1为本技术实施例提供的日志数据的处理方法的一种流程示意图。如图1所示,a1、电子设备中的多个应用程序在通过进程发起写入(write)类型的系统调用时,电子设备中的第一扩展伯克利包过滤器(extended berkeley packet filter,ebpf)程序获取每个write类型的系统调用。a2、电子设备中的第一ebpf程序确定至少一个写入类型的系统调用中存在目标系统调用的情况下,获取目标系统调用所对应的日志数据的目标存储地址;其中,目标系统调用为目标应用程序发起的写入类型的系统调用,目标系统调用所对应的操作为将日志数据写入本地存储介质,目标存储地址用于指示在目标系统调用中该日志数据的读取地址,目标应用程序为需要获取日志数据的应用程序。a3、电子设备中的第一ebpf程序根据目标存储地址,获取目标系统调用所对应的日志数据。
48.通过上述描述可知,当通过ebpf程序发现某个写入类型的系统调用是由正在监控的目标应用程序发起的,且该写入类型的系统调用的目的是将日志数据写入本地存储介质时,就直接根据目标存储地址来获取目标系统调用所对应的日志数据,由于目标存储地址用于指示在目标系统调用中该日志数据的读取地址(也即日志数据在内存中的存储地址),也即目标存储地址不是日志数据在本地存储介质中的地址,避免了在日志数据的获取过程中对本地存储介质执行读取操作,减少了对本地存储介质执行读取操作的次数,且不再需要等日志数据写入本地存储介质后再读取该日志数据,能够缩短整个日志数据读取过程的时长,提高整个日志数据读取过程的效率;此外,通过前述描述可知,本方案中不需要更改被监控的目标应用程序的代码,也即提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
49.具体的,参阅图2,图2为本技术实施例提供的日志数据的处理方法的一种流程示意图,本技术实施例提供的日志数据的处理方法可以包括:
50.201、电子设备确定需要获取日志数据的一个或多个目标应用程序。
51.本技术实施例中,电子设备中可以配置有第一指示信息,电子设备中的第一ebpf程序根据第一指示信息,从电子设备配置的多个应用程序中确定需要获取日志数据的至少一个目标应用程序,也即确定需要监控的至少一个目标应用程序。其中,第一指示信息可以包括以下一种或多种信息:每个目标应用程序的标识(identification,id)、与至少一个目标应用程序对应的至少一个目标容器的标识、与至少一个目标应用程序对应的目标命名空间(namespace)的标识或其他能够协助电子设备确定目标应用程序的信息等等;命名空间也可以称为“名称空间”或“名字空间”。
52.进一步地,目标应用程序的标识具体可以为目标应用程序的名字、唯一标识目标应用程序的标识符或其他形式等。
53.容器和应用程序之间可以为一一对应的关系,也可以为一对多的关系;目标容器的标识可以为目标容器的名称、用于唯一标识目标容器的字符串或其他信息等。容器技术的核心功能为通过约束和修改进程的动态表现,从而为进程创造出一个边界。容器实际上是在创建容器中进程时,为前述进程指定了所需要启用的一组命名空间(namespace)参数,从而容器中的进程就只能“看”到当前命名空间所限定的资源、文件、设备、状态或配置等,而无法看到电子设备中其他不想关的程序。
54.命名空间和容器之间为一对多的关系,也可以为一对一的关系;目标命名空间的标识可以为目标命名空间的名称、用于唯一标识目标命名空间的字符串或其他信息等。命名空间代表一个标识符的可见范围,一个标识符可在多个命名空间中定义,同一个标识符在不同命名空间中的含义是互不相干的,也即一个新的命名空间中可以定义任何标识符,它们不会与已有的任何标识符发生冲突。
55.具体的,针对第一指示信息的获取方式。在一种情况下,电子设备可以配置有输入设备(例如鼠标、键盘或其他设备等),电子设备的显示屏上可以展示有多个应用程序的第一图标和用于触发第一指示信息的配置操作的第二图标。用户可以通过前述图标输入第一指示信息的配置界面的打开操作;或者,用户可以直接将目标应用程序的第一图标拖拽至第二图标处,以实现对第一指示信息的配置;或者,用户还可以通过语音的方式,输入想要获取日志数据的目标应用程序等等,第一指示信息的配置方式可以结合实际应用场景灵活确定,此处不限定第一指示信息的配置方式。
56.为了更直观地理解本方案,请参阅图3和图4,图3为本技术实施例提供的日志数据的处理方法中第一指示信息中目标应用程序的标识信息的添加过程的一种示意图;图4为本技术实施例提供的日志数据的处理方法中第一指示信息中目标应用程序的标识信息的删除过程的一种示意图。先参阅图3包括(a)和(b)两个子示意图,在图3的(a)子示意图中,b1代表电子设备中配置的多个应用程序的第一图标,b2代表用于触发第一指示信息的配置操作的第二图标;在图3的(b)子示意图中,b3代表用户选中的一个目标应用程序的图标,用户长按目标应用程序的图标后,将目标应用程序的图标拖拽至第二图标处,以触发在第一指示信息中添加目标应用程序的标识信息。
57.再参阅图4,图4包括(a)和(b)两个子示意图,在图4的(a)子示意图中,b1代表电子设备中配置的多个应用程序的第一图标,b2代表用于触发第一指示信息的配置操作的第二图标,当用户点击第二图标时,触发进入图4的(b)子示意图,图4的(b)子示意图中以展示有三个目标应用程序的图标为例,三个目标应用程序分别为图库、电子邮件和音乐,c1代表用于接收对图库这一目标应用程序的删除操作的图标,当用户点击c1时,触发在第一指示信息中删除图库这一目标应用程序的标识信息,应理解,图3和图4中的示例仅为方便理解本方案,具体对用于配置第一指示信息的界面的设计,可以结合实际应用场景灵活确定,此处不做限定。
58.在另一种情况下,电子设备可以通过显示屏展示存储有第一指示信息的文件,则用户可以通过向前述文件中写入第一指示信息,或者,修改前述文件中的第一指示信息的方式来实现对第一指示信息的配置操作。作为示例,例如存储第一指示信息的文件具体表
现为word文档,则电子设备可以通过显示屏幕展示前述word文档,从而用户可以打开前述word文档,以写入/修改需要获取日志数据的目标应用程序的名称,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
59.在另一种情况下,当前电子设备可以接收其他电子设备发送的第一指示信息;可选地,在本技术实施例提供的方案的运行过程中,其他电子设备可以向当前电子设备发送更新后的第一指示信息,以实现对第一指示信息的更新操作等。需要说明的是,上述对第一指示信息的配置操作的说明仅为方便理解本方案,具体采用什么方式来配置第一指示信息,可以结合实际的应用场景来灵活确定,此处不做限定。
60.更具体的,电子设备中还配置有第二ebpf程序,电子设备通过第二ebpf程序读取该第一指示信息,并通过第二ebpf程序将第一指示信息传输给第一ebpf程序。其中,第一ebpf程序为运行于内核空间(kernel space)的ebpf程序,第二ebpf程序为运行于用户空间(user space)的第二ebpf程序。
61.其中,操作系统将运行中的应用程序被划分为两部分,一部分为运行于内核空间的应用程序,另一部分为运行于用户空间的应用程序。若某一应用程序运行在内核空间中,可以执行任何指令,运行的代码也不受任何的限制,可以自由地访问任何有效地址,也可以直接进行端口的访问。若某一应用程序运行在用户空间中,被执行的代码要受到诸多检查,它们只能访问预先规定的在用户态下可访问页面的虚拟地址,且只能对预先规定的可访问端口进行直接访问。
62.进一步地,在本技术实施例提供的方案的安装过程中,可以配置第一指示信息;可选地,在本技术实施例提供的方案的运行过程中,也可以更新第一指示信息。
63.针对第一指示信息发生变化的情况。在一种实现方式中,当电子设备通过操作系统确定第一指示信息发生改变,向第二ebpf程序发出通知,以告知第二ebpf程序该第一指示先发生改变;第二ebpf程序响应于接收到的通知,触发读取更新后的第一指示信息,并将更新后的第一指示信息传输给第一ebpf程序。
64.在另一种实现方式中,第二ebpf程序可以每隔固定时长,或者,在固定的时间点执行一次第一指示信息的读取操作,并将读取到的第一指示信息传输给第一ebpf程序,以使第一ebpf程序获取到的第一指示信息为最新的第一指示信息。其中,前述固定时长可以为一天、三天、一周或其他时长等;前述固定的时间点可以为凌晨3点、早上6点、中午12点等等,具体固定时长或固定时间点的选择可以结合实际应用场景确定,此处不做穷举。
65.更进一步地,在执行步骤201之前,第一ebpf程序需要先编译成特定的字节码(也即中间语言形式的程序代码),电子设备中的第二ebpf程序通过系统调用接口将字节码形式的第一ebpf程序装载进到内核。内核会先验证第一ebpf程序的程序代码,确保第一ebpf程序不会影响内核的正常工作,通过jit(just in time,即时编译器)对第一ebpf程序的程序代码进行优化后,将第一ebpf程序运行在内核空间中。
66.其中,第一ebpf程序可以采用编程语言python、编程语言go编写或其他类型的编程序言等,上述中间语言可以采用底层虚拟机(low level virtual machine,llvm)或其他类型的中间语言等。
67.为了更直观地理解本方案,请参阅图5,图5为本技术实施例提供的日志数据的处理方法中装载第一ebpf程序的一种流程示意图。如图5所示,电子设备中还配置有第二ebpf
程序,第二ebpf程序运行于用户空间中。d1、第二ebpf程序获取第一ebpf程序的程序代码。d2、第二ebpf程序将第一ebpf程序的程序代码编译成特定的字节码(bytecode)形式的程序代码。d3、第二ebpf程序将第一ebpf程序所对应的字节码(bytecode)形式的程序代码装载进电子设备的内核。d4、电子设备的内核对第一ebpf程序所对应的字节码(bytecode)形式的程序代码进行验证。d5、在电子设备的内核确保第一ebpf程序不会影响内核的正常工作的情况下,确定第一ebpf程序能够运行于内核空间中,应理解,图5中的示例仅为方便理解本方案,不用于限定本方案。
68.202、电子设备通过第一ebpf程序获取打开类型的系统调用所对应的进程标识和文件标识符。
69.本技术的一些实施例中,电子设备的第一ebpf程序在确定需要获取日志数据的一个或多个目标应用程序后,可以通过第一ebpf程序获取操作系统中运行的每个打开(open)类型的系统调用所对应的进程标识(process identification,pid)和文件标识符(file descriptor,fd),以从多个open类型的系统调用中筛选出第一系统调用,第一系统调用为由目标应用程序发起的,且指向的操作为打开日志文件的open类型的系统调用。
70.其中,电子设备的操作系统提供一系列具备预定功能的内核函数,通过一组称为系统调用(system call)的接口呈现给用户。电子设备中的应用程序可以发起系统调用,以把请求传递给操作系统,操作系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。作为示例,例如系统调用包括但不限于文件读写类的系统调用、进程控制类的系统调用、系统控制类的系统调用等等,此处不做穷举。
71.具体的,针对多个open类型的系统调用中的任意一个open类型的系统调用(为方便后续描述,以下称为“第二系统调用”)的处理过程。电子设备的第一ebpf程序可以利用kprobe技术、kretprobe技术、跟踪点(tracepoints)技术或其他拦截技术,以获取到第二系统调用所对应的对第二进程标识和第二文件标识符。其中,kprobe技术和kretprobe技术为一种动态的拦截技术,tracepoints技术为一种静态的拦截技术;需要说明的是,电子设备的第一ebpf程序还可以采用其他类型的拦截技术,以实现对open类型的系统调用所对应的pid和fd的获取,具体采用哪种类型的拦截技术可以结合实际的应用场景确定,此处不做限定。
72.更具体的,若采用kprobe技术和kretprobe技术获取与一个第二系统调用对应的第二pid和第二fd,则电子设备中的第一ebpf程序先采用kprobe技术获取第二系统调用中携带的参数,前述参数包括第二系统调用所对应的第二pid和文件名;电子设备中的第一ebpf程序再采用kretprobe技术获取第二系统调用所对应的返回值,前述返回值包括第二系统调用所对应的第二fd。
73.需要说明的是,上述对于采用kprobe技术和kretprobe技术时的描述仅为方便理解本方案,若采用tracepoints技术或其他拦截技术获取第二系统调用所对应的第二pid和第二fd,则获取的可能为其他类型的信息,此处不再一一进行介绍。
74.进一步地,在执行步骤202之前,电子设备中的第一ebpf程序还需要挂载到与open类型的系统调用对应的各个钩子(hook)上,当操作系统或应用程序执行到前述钩子上时,就会触发第一ebpf程序开始执行步骤202。
75.203、电子设备通过第一ebpf程序判断第二进程标识是否为与目标应用程序对应
的进程标识,若第二进程标识为与目标应用程序对应的进程标识,则进入步骤204;若第二进程标识不是与目标应用程序对应的进程标识,则重新进入步骤202。
76.本技术的一些实施例中,电子设备在获取到第二系统调用(也即多个open类型的系统调用中任意一个open类型的系统调用)所对应的第二pid之后,会判断前述第二系统调用所对应的第二pid是否为与目标应用程序对应的进程标识,若前述判断的判断结果为是,则第一ebpf程序将第二系统调用所对应的第二pid写入ebpf maps中,ebpf maps可以被翻译为ebpf映射信息、ebpf键值存储或其他名称等,并进入步骤204;若前述判断的判断结果为否,则重新进入步骤202,以继续获取下一open类型的系统调用所对应的pid。
77.具体的,在一种实现方式中,无论电子设备是否采用容器技术来运行进程,第一ebpf程序先根据第一指示信息,获取到需要获取日志数据的至少一个目标应用程序中每个目标应用程序的名称。在第一ebpf程序得到第二系统调用(也即操作系统中任意一个open类型的系统调用)所对应的第二pid后,可以获取第二系统调用所对应的第二pid中携带的命令行,前述命令行中会记录第二系统调用所对应的应用程序的名称;第一ebpf程序判断第二系统调用所对应的应用程序的名称是否包括于至少一个目标应用程序中,若前述判断的判断结果为是,则确定第二系统调用所对应的第二pid为与目标应用程序对应的进程标识;若前述判断的判断结果为否,则确定第二系统调用所对应的第二pid不是与目标应用程序对应的进程标识。
78.在另一种实现方式中,若电子设备采用容器技术运行进程。则电子设备中的第一ebpf程序还可以根据第一指示信息,获取与需要日志数据的目标应用程序所对应的至少一个目标容器的标识,根据所有目标容器的标识,获取所有目标容器所对应的容器描述信息,容器描述信息中会携带有与目标应用程序对应的pid,则电子设备中的第一ebpf程序可以获取到所有目标应用程序对应的pid集合。第一ebpf程序判断第二系统调用所对应的第二pid是否包含于前述pid集合,若前述判断的判断结果为是,则确定第二系统调用所对应的第二pid为与目标应用程序对应的进程标识;若前述判断的判断结果为否,则确定第二系统调用所对应的第二pid不是与目标应用程序对应的进程标识。
79.需要说明的是,第一ebpf程序还可以通过其他方式来判断第二系统调用所对应的第二pid是否为与目标应用程序对应的进程标识,此处不做穷举。
80.204、电子设备通过第一ebpf程序判断第二文件标识符指向的文件是否为日志文件,若第二文件标识符指向的文件为日志文件,则进入步骤205;若第二文件标识符指向的文件不是日志文件,则重新进入步骤202。
81.本技术的一些实施例中,电子设备在获取到任意一个打开(open)类型的系统调用(也即第二系统调用)所对应的第二fd之后,会判断前述第二fd指向的文件是否为日志文件,若前述判断的判断结果为是,则进入步骤205;若前述判断的判断结果为否,则重新进入步骤202,以继续获取下一open类型的系统调用所对应的fd。
82.具体的,电子设备中的第一ebpf程序根据第二系统调用所对应的第二fd,获取前述第二fd所指向的第一文件,根据第一文件的属性信息判断前述第一文件是否为日志文件。
83.更具体的,在一种实现方式中,第一ebpf程序判断第一文件的后缀是否符合日志文件的后缀的要求,若第一文件的后缀符合日志文件对后缀的要求,则确定第二文件标识
符指向的文件为日志文件;若第一文件的后缀不符合日志文件对后缀的要求,则确定第二文件标识符指向的文件不是日志文件。作为示例,例如第一ebpf程序判断第一文件的后缀是否为.log,若第一文件的后缀为.log,则证明第一文件是日志文件,应理解,此处举例仅为方便理解本方案,不用于限定本方案。
84.在另一种实现方式中,第一ebpf程序判断第一文件的名称中是否携带有日志类应用程序的名称等,需要说明的是,第一ebpf程序还可以通过其他方式来判断第二系统调用所对应的第二fd指向的是否为日志文件,此处不做穷举。
85.205、电子设备通过第一ebpf程序将第二进程标识和第二文件标识符写入ebpf映射信息。
86.本技术的一些实施例中,在电子设备中的第一ebpf程序确定第二系统调用所对应的第二pid与目标应用程序对应,且第二系统调用所对应的第二fd指向的文件为日志文件的情况下,电子设备中的第一ebpf程序将第二系统调用所对应的第二pid和第二fd写入到ebpf maps中,也即ebpf maps中存储有至少一个第二pid和至少一个第二fd。
87.进一步地,ebpf maps能够在不同的ebpf程序之间共享信息,也即运行于内核空间的第一ebpf程序和运行于用户空间的第二ebpf程序均可以访问ebpf maps。ebpf maps具体可以表现为哈希(hash)表、数据、链表或其他数据存储结构等,此处不做穷举。优选地,ebpf maps采用哈希表的形式,由于pid和fd的键值均较大,采用哈希表的存储结构,能够使得检索过程更为容易。
88.需要说明的是,电子设备中的操作系统还会响应于该第二系统调用,打开第二系统调用所指向的第一文件;需要说明的是,电子设备中的操作系统打开第一文件这一步骤可以在步骤205之后执行,也可以为在步骤202至205中任意步骤之前或之后执行,具体实现方式需要结合实际的应用场景确定。
89.206、电子设备通过第一ebpf程序判断第三系统调用是否为目标系统调用,若判断结果为是,则进入步骤207;若判断结果为否,则重新进入步骤206;目标系统调用为目标应用程序发起的写入类型的系统调用,目标系统调用所对应的操作为将日志数据写入本地存储介质。
90.本技术实施例中,电子设备中的第一ebpf程序在确定需要获取日志数据的一个或多个目标应用程序后,会获取操作系统中运行的每个写入(write)类型的系统调用,以判断每个写入(write)类型的系统调用是否为目标系统调用;若判断结果为是,则进入步骤207;若判断结果为否,则重新进入步骤206,也即继续判断下一个write类型的系统调用是否为目标系统调用。其中,目标系统调用指的是由目标应用程序发起的,且指向的操作为将日志数据写入本地存储介质的写入类型的系统调用;作为示例,例如本地存储介质可以为本地磁盘或其他类型的本地存储介质等,具体采用哪种类型的本地存储介质需要结合具体的应用程序和应用场景确定。
91.针对多个write类型的系统调用中的任意一个write类型的系统调用(为方便描述,本技术实施例中简称为“第三系统调用”)的判断过程。在一种情况中,电子设备中的第一ebpf程序可以利用第三系统调用所对应的第一pid和第一fd来执行前述判断过程。具体的,第一ebpf程序获取第三系统调用所对应的第一pid和第一fd;在第一pid为与目标应用程序对应的进程标识,且第一fd指向的文件为日志文件的情况下,第一ebpf程序将前述第
三系统调用确定为目标系统调用。
92.本技术实施例中,由于目标应用程序写入日志文件的地址可能会发生变化,根据写入类型的系统调用所对应的进程标识和文件标识符,确定某个写入类型的系统调用是否为目标系统调用,相对于根据写入类型的系统调用所对应的文件路径,确定某个写入类型的系统调用是否为目标系统调用,使得目标系统调用的判断过程更为精确,也即能够适应动态多变的运行环境,扩展了本方案的应用场景,使得日志数据的获取过程更为灵活。
93.更具体的,针对第三系统调用所对应的第一pid和第一fd的获取过程,电子设备中的第一ebpf程序获取第一pid和第一fd的具体实现方式,与步骤202中第一ebpf程序获取打开类型的系统调用所对应的进程标识和文件标识符的具体实现方式类似;区别在于,在步骤202中,第一ebpf程序是被挂载到与open类型的系统调用对应的各个钩子(hook)上,在步骤206中,第一ebpf程序还需要被挂载到与write类型的系统调用对应的各个钩子上,具体实现方式可参阅上述步骤202中的描述理解,此处不做赘述。
94.针对第三系统调用所对应的第一pid和第一fd的判断过程。由于步骤202至205为可选步骤,在一种实现方式中,若执行步骤202至205,则电子设备中的第一ebpf程序在获取到第三系统调用所对应的第一pid和第一fd后,可以判断ebpf maps存储的至少一个第二pid中是否包括第三系统调用所对应的第一pid,且ebpf maps存储的至少一个第二fd是否包括第三系统调用所对应的第一fd。若第三系统调用所对应的第一pid和第三系统调用所对应的第一fd均存在于ebpf maps中,则第一ebpf程序确定第三系统调用为目标系统调用,也即第三系统调用为由目标应用程序发起的、且指向的操作为将日志数据写入本地存储介质的系统调用。若第三系统调用所对应的第一pid不存在于ebpf maps中,或第三系统调用所对应的第一fd不存在于ebpf maps中,确定第三系统调用不是目标系统调用。
95.为了更直观地理解本方案,请参阅图6,图6为本技术实施例提供的日志数据的处理方法中判断第三系统调用是否为目标系统调用的一种示意图。e1、电子设备中的第一ebpf程序采用kprobe技术,获取到open类型的系统调用中携带的参数,也即获取到open类型的系统调用中携带的进程标识pid和文件名。e2、第一ebpf程序从多个open类型的系统调用携带的pid中筛选出与目标应用程序对应的第二pid,并将与目标应用程序对应的第二pid写入到ebpf maps中。e3、针对与目标应用程序对应的open类型的系统调用,第一ebpf程序采用kretprobe技术,获取到前述open类型的系统调用对应的返回值,也即与前述open类型的系统调用对应的第二文件标识符fd。e4、若步骤e3中获取到的第二fd指向的文件为日志文件,则将步骤e3中获取到的第二fd写入到ebpf maps中。e5、第一ebpf程序采用kprobe技术,获取到write类型的系统调用中携带的参数,也即获取到write类型的系统调用中携带的第一pid和第一fd。e6、第一ebpf程序从多个write类型的系统调用中,筛选出携带的第一pid和第一fd均存在于ebpf maps中的目标系统调用,以获取与目标系统调用对应的日志数据的目标存储地址。应理解,图6中的示例仅为方便理解本方案,不用于限定本方案。
96.本技术实施例中,基于多个open类型的系统调用,筛选出与目标应用程序对应的多个第二pid,以及与目标应用程序对应、且指向文件为日志文件的多个第二fd,将前述筛选出的多个第二pid和多个第二fd写入ebpf maps中,第一ebpf程序可以借助ebpf maps,从多个write类型的系统调用中筛选出目标系统调用;由于向一个文件中写入数据之前,一定需要先打开该文件,且打开该文件一次之后,可以向该文件写入多次数据,因此,借助于
open类型的系统调用和ebpf maps来执行目标系统调用的筛选步骤,有利于提高前述筛选步骤的效率。
97.在另一种实现方式中,若不执行步骤202至205,则电子设备中的第一ebpf程序在获取到第三系统调用所对应的第一pid和第一fd后,可以直接判断第三系统调用所对应的第一pid是否为与目标应用程序对应的进程标识,前述判断步骤的具体实现方式可参阅上述步骤203中的描述,此处不做赘述。若第三系统调用所对应的第一pid不是与目标应用程序对应的进程标识,则第一ebpf程序可以直接确定第三系统调用不是目标系统调用。
98.若第三系统调用所对应的第一pid为与目标应用程序对应的进程标识,则第一ebpf程序继续判断第三系统调用所对应的第一fd指向的文件是否为日志文件,前述判断步骤的具体实现方式可参阅前述步骤204中的描述,此处不做赘述。若第三系统调用所对应的第一fd指向的文件为日志文件,则第一ebpf程序确定第三系统调用为目标系统调用;若第三系统调用所对应的第一fd指向的文件不是日志文件,则第一ebpf程序确定第三系统调用不是目标系统调用。
99.在另一种情况中,电子设备中的第一ebpf程序还可以利用第三系统调用所对应的写入路径来执行步骤206中的判断步骤。具体的,第一ebpf程序预先获取有与至少一个目标应用程序的日志文件对应的写入路径集合,前述写入路径集合包括至少一个写入路径;第一ebpf程序获取第三系统调用(也即多个write类型的系统调用中的任意一个write类型的系统调用)中携带的目标写入路径,判断目标写入路径是否包括于写入路径集合,若判断结果为是,则第一ebpf程序确定第三系统调用为目标系统调用;若判断结果为否,则第一ebpf程序确定第三系统调用不是目标系统调用。
100.207、电子设备通过第一ebpf程序获取目标系统调用所对应的日志数据的目标存储地址,目标存储地址用于指示在目标系统调用中该日志数据的读取地址。
101.本技术实施例中,电子设备中的第一ebpf程序在确定第三系统调用(也即多个write类型的系统调用中的任一个write类型的系统调用)为目标系统调用的情况下,获取目标系统调用所对应的日志数据的目标存储地址;其中,目标存储地址用于指示在目标系统调用中该日志数据的读取地址,换言之,目标存储地址用于指示该日志数据在生成之后且被写入至本地存储介质之前的存储地址,目标存储地址可以基于目标系统调用得到,作为示例,例如日志数据生成时的存储地址位于内存中。
102.进一步地,第一ebpf程序可以获取目标系统调用中携带的缓冲区(buffer)指针和数量(count)参数,buffer指针用于指示目标系统调用所对应的日志数据在内存中的起始读取地址,count参数用于指示日志数据的长度,也即目标存储地址可以包括目标系统调用所对应的日志数据在内存中的起始读取地址和日志数据的长度。需要说明的是,目标存储地址用于指示的可以不是该日志数据的起始读取地址,而是该日志数据的中间数据的读取地址,或者目标存储地址用于指示该日志数据的结束位置的读取地址,或者,目标存储地址用于指示该日志数据中任意一个数据的读取地址等,具体目标存储地址中选用的是哪些地址,需要结合实际应用环境灵活确定,此处不做限定。
103.208、电子设备根据目标存储地址,获取目标系统调用所对应的日志数据。
104.本技术实施例中,电子设备的第一ebpf程序在得到目标存储地址之后,会根据目标系统调用所对应的日志数据在内存中的读取地址以及日志数据的长度,从内存中复制该
内存数据,进而将获取到的日志数据传输至第二ebpf程序。第二ebpf程序在获取到日志数据后,可以将日志数据发送给外部存储设备;其中,前述外部存储设备可以为本地的外部存储设备,也可以为远端的外部存储设备。
105.本技术实施例中,从写入类型的系统调用中获取该日志数据的读取地址和日志数据的长度,也即获取到日志数据在内存中的读取地址以及日志数据的长度,提供了从目标存储地址处直接复制数据的一种具体实现方案。
106.具体的,针对第一ebpf程序将复制到的日志数据传输给第二ebpf程序的过程。在一种实现方式中,电子设备中的第一ebpf程序将目标系统调用所对应的日志数据写入ebpf maps;通过电子设备中的第二ebpf程序读取ebpf maps中存储的日志数据,并向外部存储设备发送读取到的日志数据。
107.本技术实施例中,利用ebpf maps机制,第一ebpf程序将日志数据从内核空间传输至位于用户空间的第二ebpf程序,以通过第二ebpf程序向外部存储设备发送该日志数据,ebpf maps能同时被第一ebpf程序和第二ebpf程序访问,前述方式简单易于操作,且稳定高效。
108.可选地,第一ebpf程序可以借助perf event这一功能,将目标系统调用所对应的日志数据写入ebpf maps;对应的,第二ebpf程序也可以借助perf event这一功能,读取ebpf maps中存储的日志数据。其中,perf是一款性能诊断工具,perf event是perf中提供的一种功能。借助perf event这一功能能够通过异步触发的方式实现日志数据的高性能传输,以进一步提高整个日志数据从传输过程的效率。需要说明的是,第一ebpf程序和第二ebpf程序也可以不借助perf event功能,直接将日志数据从内核空间导出至ebpf maps中,并由第二ebpf程序读取ebpf maps,以将日志数据导出至用户空间等,此处不限定日志数据的导出过程的具体实现方式。
109.更具体的,受限于与第一ebpf程序的栈的大小的限制,第一ebpf程序可以采用循环截取日志片段的方式,将整个日志数据存入ebpf maps中。为了进一步地理解本方案,如下公开了第一ebpf程序读取内存中的日志数据的程序代码片段。
[0110][0111]
其中,上述写入内容也即目标系统调用所指向的待写入的日志数据,由于上述示出的内容中已对代码进行了解释,可直接参阅理解。
[0112]
在另一种实现方式中,电子设备中的第一ebpf程序可以通过调用第一辅助函数,将日志数据直接传输给第二ebpf程序。其中,第一辅助函数具体可以表现为bpf_trace_printk或其他类型的辅助函数等,此处不做穷举。
[0113]
可选地,在电子设备确定第三系统调用为目标系统调用之后,还可以通过调用第二辅助函数,以阻止操作系统将第三系统调用所对应的日志数据写入到本地存储介质。其中,第二辅助函数具体可以表现为bpf_override_return或其他辅助函数等,此处不做穷举。本实现方式中,通过前述步骤,能够避免了整个日志数据读取过程中对本地存储介质的写入操作,以进一步降低本地计算机资源的消耗。
[0114]
为了更直观地理解本方案,请参阅图7,图7为本技术实施例提供的日志数据的处理方法的一种流程示意图。如图7所示,运行于用户空间的第二ebpf程序将第一ebpf程序装载进内核空间,第二ebpf程序读取第一指示信息,并将第一指示信息传输给第一ebpf程序,前述步骤的具体实现方式均可以参阅上述描述,此处不做赘述。
[0115]
在电子设备中的应用程序通过进程发起open类型的系统调用时,第一ebpf程序会拦截每个open类型的系统调用,以获取与每个open类型的系统调用对应的进程标识pid和文件标识符fd,以筛选出与目标应用程序对应的第二pid,并将与目标应用程序对应的第二pid写入ebpf maps;第一ebpf程序还会筛选出与目标应用程序对应、且指向的文件为日志文件的第二fd,并将筛选出的第二fd写入ebpf maps;第一ebpf程序还会返回至open类型的
系统调用(syscall open),也即继续由操作系统执行该open类型的系统调用,前述步骤的具体实现方式均可以参阅上述描述,此处不做赘述。
[0116]
在电子设备中的应用程序通过进程发起write类型的系统调用时,第一ebpf程序会拦截每个write类型的系统调用,以从多个write类型的系统调用中筛选出目标系统调用,并获取与目标系统调用对应的日志数据在内存中的存储地址,以从内存中读取日志数据。
[0117]
第一ebpf程序还会阻止继续执行write类型的系统调用(syscall write),也即第一ebpf程序阻止返回日志数据,与目标系统调用对应的日志数据不会再写入本地存储介质中,应理解,图7中的示例仅为方便理解本方案,不用于限定本方案。
[0118]
本技术实施例中,通过ebpf程序获取写入类型的系统调用,当发现某个写入类型的系统调用是由正在监控的目标应用程序发起的,且该写入类型的系统调用的目的是将日志数据写入本地存储介质时,就直接根据目标存储地址来获取目标系统调用所对应的日志数据,由于目标存储地址用于指示在目标系统调用中该日志数据的读取地址,也即目标存储地址不是日志数据在本地存储介质中的地址,避免了在日志数据的获取过程中对本地存储介质执行读取操作,减少了对本地存储介质执行读取操作的次数,且不再需要等日志数据写入本地存储介质后再读取该日志数据,能够缩短整个日志数据读取过程的时长,提高整个日志数据读取过程的效率;此外,通过前述描述可知,本方案中不需要更改被监控的目标应用程序的代码,也即提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
[0119]
为了对本技术实施例所带来的有益效果有更为直观地理解,以下结合图8a和图8b实际试验数据对本技术实施例所带来的有益效果进行说明。图8a和图8b分别为本技术实施例提供的日志数据的处理方法所带来的有益效果的两个示意图,图8a和图8b中均以第一ebpf程序会阻止将日志数据写入本地存储介质为例。在图8a中,横坐标代表write类型的系统调用的并发度从每秒100个请求至每秒1000个请求,一个请求会触发一个或多个write类型的系统调用;纵坐标代表10秒内完成的write类型的系统调用的次数。f1指向的折线代表不采用本技术实施例提供的方案时的次数,f2指向的折线代表采用本技术实施例提供的方案时的次数。通过对比f1和f2可知,采用本技术实施例提供的方案后使得完成的write类型的系统调用的次数大大降低,也即指向的操作为将日志数据写入本地存储介质的write类型的系统调用被阻止了,进一步降低了对本地存储介质执行写操作的次数。
[0120]
继续参阅图8b,图8b的横坐标的含义与图8b的横坐标的含义类似,此处不做赘述,图8a的纵坐标代表10秒内写入本地存储介质的字节数,g1指向的折线代表不采用本技术实施例提供的方案时所对应的字节数,g2指向的折线代表采用申请实施例提供的方案时所对应的字节数。通过对比g1和g2可知,采用本技术实施例提供的方案后,被监控的目标应用程序没有再将日志数据写入到本地存储介质中,大大降低了被监控的目标应用程序向本地存储介质中写入的字节的数量。
[0121]
在图1至图8b所对应的实施例的基础上,为了更好的实施本技术实施例的上述方案,下面还提供用于实施上述方案的相关设备。具体参阅图9,图9为本技术实施例提供的日志数据的处理装置的一种结构示意图。日志数据的处理装置900包括:确定模块901,用于通过第一扩展伯克利包过滤器ebpf程序从至少一个写入(write)类型的系统调用中确定目标
系统调用,其中,目标系统调用所对应的操作为将日志数据写入本地存储介质,目标系统调用为目标应用程序发起的写入类型的系统调用;获取模块902,用于获取目标系统调用所对应的日志数据的目标存储地址,目标存储地址用于指示在目标系统调用中该日志数据的读取地址;获取模块902,还用于根据目标存储地址,获取目标系统调用所对应的日志数据。
[0122]
在一种可能的设计中,确定模块901,具体用于:通过第一ebpf程序获取写入类型的系统调用所对应的第一进程标识和第一文件标识符;在第一进程标识为与目标应用程序对应的进程标识,且第一文件标识符指向的文件为日志文件的情况下,将与第一进程标识对应的写入类型的系统调用确定为目标系统调用。
[0123]
在一种可能的设计中,获取模块902,具体用于:通过第一ebpf程序将目标系统调用所对应的日志数据写入ebpf映射信息(maps);通过第二ebpf程序读取ebpf maps中存储的日志数据,并向外部存储设备发送读取到的日志数据,其中,第一ebpf程序为运行于内核空间中的ebpf程序,第二ebpf程序为运行于用户空间的ebpf程序。
[0124]
在一种可能的设计中,请参阅图10,图10为本技术实施例提供的日志数据的处理装置的另一种结构示意图。获取模块902,还用于通过第一ebpf程序获取打开(open)类型的系统调用所对应的第二进程标识和第二文件标识符;日志数据的处理装置900还包括:写入模块903,用于在第二进程标识为与目标应用程序对应的进程标识,且第二文件标识符指向的文件为日志文件的情况下,将第二进程标识和第二文件标识符写入ebpf maps;确定模块901,还用于若ebpf maps存储的第二进程标识中包括第一进程标识,且ebpf maps存储的第二文件标识符包括第一文件标识符,则确定第一进程标识为与目标应用程序对应的进程标识,且第一文件标识符指向的文件为日志文件。
[0125]
在一种可能的设计中,目标存储地址包括在目标系统调用中的日志数据的读取地址和日志数据的长度;获取模块902,具体用于根据在目标系统调用中的日志数据的读取地址和日志数据的长度,获取目标系统调用所对应的日志数据。
[0126]
需要说明的是,日志数据的处理装置900中各模块/单元之间的信息交互、执行过程等内容,与本技术中图2至图7对应的各个方法实施例基于同一构思,具体内容可参见本技术前述所示的方法实施例中的叙述,此处不再赘述。
[0127]
本技术实施例还提供了一种电子设备,该电子设备具体可以表现为服务器的形态,也可以表现为终端设备的形态。若该电子设备具体表现为服务器的形态,则请参阅图11,图11是本技术实施例提供的电子设备一种结构示意图,电子设备1100用于实现图2至图7对应实施例中电子设备执行的步骤,用于实现图9或图10示出的实施例中日志数据的处理装置900所实现的功能。具体的,电子设备1100由一个或多个服务器实现,电子设备1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(cemtral processimg umits,cpu)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对电子设备中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在电子设备1100上执行存储介质1130中的一系列指令操作。
[0128]
电子设备1100还可以包括一个或一个以上电源1126,一个或一个以上有线或无线
网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如wimdows servertn,nac os xtn,umixtn,limuxtn,freebsdtn等等。
[0129]
需要说明的是,对于中央处理器1122执行日志数据的处理方法的具体实现方式以及带来的有益效果,均可以参考图2至图7对应的各个方法实施例中的叙述,此处不再一一赘述。
[0130]
若该电子设备具体表现为终端设备的形态,则请参阅图12,图12是本技术实施例提供的电子设备另一种结构示意图,电子设备1200用于实现图2至图7对应实施例中电子设备执行的步骤,用于实现图9或图10示出的实施例中日志数据的处理装置900所实现的功能。具体的,电子设备1200包括:接收器1201、发射器1202、处理器1203和存储器1204(其中电子设备1200中的处理器1203的数量可以一个或多个,图12中以一个处理器为例),其中,处理器1203可以包括应用处理器12031和通信处理器12032。在本技术的一些实施例中,接收器1201、发射器1202、处理器1203和存储器1204可通过总线或其它方式连接。
[0131]
存储器1204可以包括只读存储器和随机存取存储器,并向处理器1203提供指令和数据。存储器1204的一部分还可以包括非易失性随机存取存储器(mom-volatile ramdon access nenory,mvran)。存储器1204存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
[0132]
处理器1203控制电子设备的操作。具体的应用中,电子设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
[0133]
上述本技术实施例揭示的方法可以应用于处理器1203中,或者由处理器1203实现。处理器1203可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1203中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1203可以是通用处理器、数字信号处理器(digital sigmal processimg,dsp)、微处理器或微控制器,还可进一步包括专用集成电路(applicatiom specific imtegrated circuit,asic)、现场可编程门阵列(field-progrannable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器1203可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1204,处理器1203读取存储器1204中的信息,结合其硬件完成上述方法的步骤。
[0134]
接收器1201可用于接收输入的数字或字符信息,以及产生与电子设备的相关设置以及功能控制有关的信号输入。发射器1202可用于通过第一接口输出数字或字符信息;发射器1202还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器1202还可以包括显示屏等显示设备。
[0135]
需要说明的是,对于处理器1203中的应用处理器12031执行日志数据的处理方法的具体实现方式以及带来的有益效果,均可以参考图2至图7对应的各个方法实施例中的叙
述,此处不再一一赘述。
[0136]
本技术实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上运行时,使得计算机执行如前述图2至图7所示实施例描述的方法中电子设备所执行的步骤。
[0137]
本技术实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图7所示实施例描述的方法中电子设备所执行的步骤。
[0138]
本技术实施例中还提供一种电路系统,所述电路系统包括处理电路,所述处理电路配置为执行如前述图2至图7所示实施例描述的方法中电子设备所执行的步骤。
[0139]
本技术实施例提供的日志数据的处理装置或电子设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使芯片执行上述图2至图7所示实施例描述的方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-omly nenory,ron)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(ramdon access nenory,ran)等。
[0140]
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,asic,或一个或多个用于控制上述第一方面方法的程序执行的集成电路。
[0141]
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
[0142]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用clu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、ron、ran、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0143]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
[0144]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质
传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献