一种日志数据的处理方法以及装置制造方法及图纸

技术编号:35927766 阅读:24 留言:0更新日期:2022-12-14 10:11
本申请涉及计算机技术的程序代码领域中,公开了一种日志数据的处理方法以及装置。方法包括:在通过第一eBPF程序确定至少一个写入类型的系统调用中存在目标系统调用的情况下,获取目标系统调用所对应的日志数据的目标存储地址;根据目标存储地址,获取目标系统调用所对应的日志数据;目标系统调用为目标应用程序发起的、且指向的操作为将日志数据写入本地存储介质的系统调用,目标存储地址指示在目标系统调用中该日志数据的读取地址;提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。不需要对目标应用程序的代码进行修改的方案。不需要对目标应用程序的代码进行修改的方案。

【技术实现步骤摘要】
一种日志数据的处理方法以及装置


[0001]本申请涉及计算机
,尤其涉及一种日志数据的处理方法以及装置。

技术介绍

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

技术实现思路

[0005]本申请提供了一种日志数据的处理方法以及装置,提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
[0006]为解决上述技术问题,本申请提供以下技术方案:
[0007]第一方面,本申请提供一种日志数据的处理方法,可用于计算机技术的程序代码领域中,方法包括:电子设备通过第一扩展伯克利包过滤器eBPF程序从至少一个写入(write)类型的系统调用中确定目标系统调用,其中,目标系统调用所对应的操作为将日志数据写入本地存储介质;目标系统调用为目标应用程序发起的写入类型的系统调用,目标应用程序为需要获取日志数据的应用程序,也即目标应用程序为需要监控的应用程序。进一步地,电子设备的操作系统提供一系列具备预定功能的内核函数,通过一组称为系统调用(system call)的接口呈现给用户;电子设备中的应用程序可以发起系统调用,以把请求传递给操作系统,操作系统调用相应的内核函数完成所需的处理,将处理结果返回给应用程序;作为示例,例如写入(write)类型的系统调用就属于文件读写类的系统调用。电子设备获取目标系统调用所对应的日志数据的目标存储地址,并根据目标存储地址,获取目标系统调用所对应的日志数据;其中,目标存储地址用于指示在目标系统调用中该日志数据的读取地址,换言之,目标存储地址用于指示该日志数据在生成之后且被写入至本地存储介质之前的存储地址,目标存储地址可以基于目标系统调用得到,作为示例,例如目标存储地址可以用于指示目标系统调用所对应的日志数据在内存中的存储地址。
[0008]本实现方式中,通过eBPF程序获取写入类型的系统调用,当发现某个写入类型的系统调用是由正在监控的目标应用程序发起的,且该写入类型的系统调用的目的是将日志数据写入本地存储介质时,就直接根据目标存储地址来获取目标系统调用所对应的日志数据,由于目标存储地址用于指示在目标系统调用中该日志数据的读取地址,也即目标存储地址不是日志数据在本地存储介质中的地址,避免了在日志数据的获取过程中对本地存储介质执行读取操作,减少了对本地存储介质执行读取操作的次数,且不再需要等日志数据写入本地存储介质后再读取该日志数据,能够缩短整个日志数据读取过程的时长,提高整个日志数据读取过程的效率;此外,通过前述描述可知,本方案中不需要更改被监控的目标应用程序的代码,也即提供了一种既能减少对本地存储介质执行读取操作的次数,又不需要对目标应用程序的代码进行修改的方案。
[0009]在第一方面的一种可能实现方式中,方法还可以包括:电子设备中的第二eBPF程序读取第一指示信息,并将第一指示信息传输给第一eBPF程序;电子设备中的第一eBPF程序根据第一指示信息,从电子设备配置的多个应用程序中确定需要获取日志数据的至少一个目标应用程序。其中,第一指示信息可以包括以下一种或多种信息:每个目标应用程序的标识、与至少一个目标应用程序对应的至少一个目标容器的标识、与至少一个目标应用程序对应的目标命名空间(namespace)的标识或其他能够协助电子设备确定目标应用程序的信息等等;命名空间也可以称为“名称空间”或“名字空间”。第一eBPF程序为运行于内核空间中的eBPF程序,第二eBPF程序为运行于用户空间的eBPF程序;进一步地,若某一应用程序运行在内核空间中,可以执行任何指令,运行的代码也不受任何的限制,可以自由地访问任何有效地址,也可以直接进行端口的访问;若某一应用程序运行在用户空间中,被执行的代码要受到诸多检查,它们只能访问预先规定的在用户态下可访问页面的虚拟地址,且只能对预先规定的可访问端口进行直接访问。
[0010]在第一方面的一种可能实现方式中,第一指示信息为可更新的。
[0011]在第一方面的一种可能实现方式中,电子设备通过第一eBPF程序从至少一个写入(write)类型的系统调用中确定目标系统调用,可以包括:电子设备通过第一eBPF程序获取写入类型的系统调用所对应的第一进程标识PID和第一文件标识符FD;在第一PID为与目标应用程序对应的进程标识,且第一FD指向的文件为日志文件的情况下,也即在第一PID所标识的进程为目标应用程序发起的进程,且第一FD指向的文件为日志文件的情况下,将与第一PID对应的写入类型的系统调用确定为目标系统调用。
[0012]本实现方式中,由于目标应用程序写入日志文件的地址可能会发生变化,根据写入类型的系统调用所对应的进程标识和文件标识符,确定某个写入类型的系统调用是否为目标系统调用,相对于根据写入类型的系统调用所对应的文件路径,确定某个写入类型的系统调用是否为目标系统调用,使得目标系统调用的判断过程更为精确,也即能够适应动态多变的运行环境,扩展了本方案的应用场景,使得日志数据的获取过程更为灵活。
[0013]在第一方面的一种可能实现方式中,电子设备通过第一eBPF程序获取写入类型的系统调用所对应的第一进程标识和第一文件标识符可以包括:电子设备通过第一eBPF程序,采用kprobe技术、kretprobe技术、跟踪点(tracepoints)技术或其他拦截技术,以获取写入类型的系统调用所对应的第一进程标识和第一文件标识符,kprobe技术和kretprobe技术为一种动态的拦截技术,tracepoints技术为一种静态的拦截技术。
[0014]在第一方面的一种可能实现方式中,若采用kprobe技术和kretprobe技术获取与一个写入类型的系统调用对应的第一进程标识PID和第一文件标识符FD,则电子设备中的第一eBPF程序先采用kprobe技术获取写入类型的系统调用中携带的参数,前述参数包括写入类型的系统调用所对应的第一PID和文件名;电子设备中的第一eBPF程序再采用kre本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种日志数据的处理方法,其特征在于,所述方法包括:通过第一扩展伯克利包过滤器eBPF程序从至少一个写入(write)类型的系统调用中确定目标系统调用,其中,所述目标系统调用所对应的操作为将日志数据写入本地存储介质,所述目标系统调用为目标应用程序发起的写入类型的系统调用;获取所述目标系统调用所对应的所述日志数据的目标存储地址,所述目标存储地址用于指示在所述目标系统调用中所述日志数据的读取地址;根据所述目标存储地址,获取所述目标系统调用所对应的所述日志数据。2.根据权利要求1所述的方法,其特征在于,所述通过第一eBPF程序从至少一个写入类型的系统调用中确定目标系统调用,包括:通过所述第一eBPF程序获取写入类型的系统调用所对应的第一进程标识和第一文件标识符;在所述第一进程标识为与所述目标应用程序对应的进程标识,且所述第一文件标识符指向的文件为日志文件的情况下,将与所述第一进程标识对应的写入类型的系统调用确定为所述目标系统调用。3.根据权利要求1或2所述的方法,其特征在于,所述获取所述目标系统调用所对应的所述日志数据,包括:通过所述第一eBPF程序将所述目标系统调用所对应的所述日志数据写入eBPF映射信息(maps);通过第二eBPF程序读取所述eBPF maps中存储的所述日志数据,并向外部存储设备发送读取到的所述日志数据,其中,所述第一eBPF程序为运行于内核空间中的eBPF程序,所述第二eBPF程序为运行于用户空间的eBPF程序。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:通过所述第一eBPF程序获取打开(open)类型的系统调用所对应的第二进程标识和第二文件标识符;在所述第二进程标识为与所述目标应用程序对应的进程标识,且所述第二文件标识符指向的文件为日志文件的情况下,将所述第二进程标识和所述第二文件标识符写入eBPF maps;所述通过所述第一eBPF程序获取写入类型的系统调用所对应的第一进程标识和第一文件标识符之后,所述方法还包括:若所述eBPF maps存储的所述第二进程标识中包括所述第一进程标识,且所述eBPF maps存储的所述第二文件标识符包括所述第一文件标识符,则确定所述第一进程标识为与所述目标应用程序对应的进程标识,且所述第一文件标识符指向的文件为日志文件。5.根据权利要求1或2所述的方法,其特征在于,所述目标存储地址包括在所述目标系统调用中的所述日志数据的读取地址和所述日志数据的长度;所述根据所述目标存储地址,获取所述目标系统调用所对应的日志数据,包括:根据在所述目标系统调用中的所述日志数据的读取地址和所述日志数据的长度,获取所述目标系统调用所对应的所述日志数据。6.一种日志数据的处理装置,其特征在于,所述装置包括:确定模块,用于通过第一扩展伯克利包过滤器eBPF程序从至少一个写入(write)类型
的...

【专利技术属性】
技术研发人员:陈鹏飞翁天俊崔杰奇上官栋栋常佳
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1