日志采集方法及系统与流程

文档序号:28496376发布日期:2022-01-15 04:09阅读:1803来源:国知局
日志采集方法及系统与流程

1.本说明书涉及计算机技术领域,尤其涉及一种日志采集方法及系统。


背景技术:

2.容器技术是一种比虚拟机技术更加节省计算资源也更加灵活的虚拟化技术。日志作为应用的一个关键环节,不仅可以全方位展示应用的运行状态,也可以给开发人员排查应用问题提供帮助。在容器平台这种动态的环境下,如何在应用的容器化过程中,方便快捷的自动发现、写入和采集日志是将应用容器化部署的一个重要方面。特别是随着云原生技术的发展,利用云原生的高可用、调度、扩展能力,使得对应用容器的部署编排与维护非常便捷,大大增加了应用部署的弹性,使得单台物理机上部署的应用数显著增加。现有技术中,应用的各个容器的日志采用独立的存储进程进行文件存储,并使用独立的日志采集插件进行日志采集。当应用数和日志量级显著提高时,现有技术的方案运维复杂、磁盘写入读取延迟高、用户接入效率低,已无法满足发展需求。
3.因此,需要提供一种效率更高的日志采集方法及系统,以提高应用的日志写入效率和日志采集效率,提高日志写入和采集性能,同时改善用户使用体验。


技术实现要素:

4.本说明书提供一种效率更高的日志采集方法及系统,以提高应用的日志写入效率和日志采集效率,提高日志写入和采集性能,同时改善用户使用体验。
5.第一方面,本说明书提供一种日志采集方法,应用于每一个物理机,包括:构建目标pod,所述目标pod包括日志采集进程;对所述目标pod进行目录挂载和资源配置;将所述物理机的多个应用pod的日志写入请求发送给所述目标pod,所述日志写入请求包括目标日志的属性及其对应的日志数据,所述属性包括所述目标日志所属应用pod的应用标识;基于所述日志采集进程,将所述日志写入请求统一写入目标文件中缓存;以及基于所述日志采集进程,将所述目标文件中的所述目标日志按照所述应用标识分类存储至所述物理机的硬盘中。
6.在一些实施例中,所述目标文件对应的存储路径为所述物理机的共享内存。
7.在一些实施例中,所述构建目标pod,包括:接收基于daemonset方式部署的所述目标pod。
8.在一些实施例中,所述将所述物理机的多个应用pod的日志写入请求发送给所述目标pod,包括:基于虚拟文件系统技术将所述日志写入请求发送给所述目标pod。
9.在一些实施例中,所述对所述目标pod进行目录挂载和资源配置,包括:基于虚拟文件系统技术,将预先设定的目标目录挂载至所述目标pod中,所述目标日志包括所述目标目录下的文件;基于所述目标pod对所述每个应用pod所需资源进行配置,包括:对所述每个应用pod的监听端口进行配置;对所述每个应用pod在所述物理机中对应的存储路径进行配置;以及对所述每个应用pod在所述物理机中对应的存储空间大小进行配置。
10.在一些实施例中,所述基于所述目标pod对所述每个应用pod所需资源进行配置,还包括:对所述每个应用pod的写入阈值进行配置。
11.在一些实施例中,所述目标日志的所述属性还包括所述目标日志的日志名称、日志标识以及所述存储路径。
12.在一些实施例中,所述将所述目标文件中的所述目标日志按照所述应用标识分类存储至所述物理机的硬盘中,包括:确定所述目标文件的大小超过预设值;以及按照所述目标日志的所述应用标识的类别的顺序,将所述目标文件中的所述目标日志存储至所述应用标识对应的存储路径中。
13.在一些实施例中,所述将所述日志写入请求统一写入目标文件中缓存,包括:将所述日志写入请求以键值对的形式写入所述目标文件,所述键值对中的键包括所述目标日志的所述属性,所述键值对中的值为所述目标日志的所述日志数据。
14.在一些实施例中,所述日志采集方法还包括:基于所述日志采集进程,将所述目标文件中的所述目标日志按照所述应用标识分类发送至远端主机。
15.第二方面,本说明书还提供一种日志采集系统,包括至少一个存储介质以及至少一个处理器,所述至少一个存储介质存储有至少一个指令集,用于日志写入;所述至少一个处理器同所述至少一个存储介质通信连接,其中,当所述日志采集系统运行时,所述至少一个处理器读取所述至少一个指令集,并且根据所述至少一个指令集的指示执行本说明书第一方面所述的日志采集方法。
16.由以上技术方案可知,本说明书提供的日志采集方法及系统,通过构建目标pod,用于对日志进行写入、采集等操作。所述日志采集方法及系统将物理机上的多个应用pod中预先设定好的目标目录挂载至创建的目标pod中,将目标目录下的所有目标日志的日志数据写入和采集由目标pod接管。目标pod将所有应用pod的日志数据统一写入到一个目标文件,再将目标文件中的目标日志按照所属应用pod的分类,顺序写入应用pod对应的存储路径中,使得对于存储设备的随机写变为顺序写,大大提高写入性能。通过目标pod可以对应用容器的输入输出进行限流和资源隔离,控制单个容器的最大写入能力,防止对其他容器的写入造成堵塞影响。远端主机进行日志采集时无需从文件中采集,可以直接从存储在内存上的目标文件中采集,从而降低磁盘的输入输出、降低处理器消耗,同时降低采集延迟。同时,日志采集进程的部署与应用容器独立,用户无需关心对日志采集进程的运维操作,提高运维效率。并且,应用容器的创建和销毁都会通过挂载的方式通知到目标pod,使得目标pod对应用容器具备管控能力,可以进行资源分配和释放,不会出现采集延迟和日志丢失的情况。本说明书提供的日志采集方法及系统,在多应用混合部署,特别是云原生场景下,大大提高应用日志写入和采集效率,提高日志写入和采集性能,同时改善用户使用体验。
17.本说明书提供的日志采集方法及系统的其他功能将在以下说明中部分列出。根据描述,以下数字和示例介绍的内容将对那些本领域的普通技术人员显而易见。本说明书提供的日志采集方法及系统的创造性方面可以通过实践或使用下面详细示例中所述的方法、装置和组合得到充分解释。
附图说明
18.为了更清楚地说明本说明书实施例中的技术方案,下面将对实施例描述中所需要
使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1示出了根据本说明书的实施例提供的一种日志采集方法及系统的应用环境图;
20.图2示出了根据本说明书的实施例提供的一种物理机的硬件结构图;
21.图3示出了根据本说明书的实施例提供的一种日志采集方法流程图;
22.图4示出了根据本说明书的实施例提供的一种目录挂载和资源配置的方法流程图;以及
23.图5示出了根据本说明书的实施例提供的一种存储至物理机的方法流程图。
具体实施方式
24.以下描述提供了本说明书的特定应用场景和要求,目的是使本领域技术人员能够制造和使用本说明书中的内容。对于本领域技术人员来说,对所公开的实施例的各种局部修改是显而易见的,并且在不脱离本说明书的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用。因此,本说明书不限于所示的实施例,而是与权利要求一致的最宽范围。
25.这里使用的术语仅用于描述特定示例实施例的目的,而不是限制性的。比如,除非上下文另有明确说明,这里所使用的,单数形式“一”,“一个”和“该”也可以包括复数形式。当在本说明书中使用时,术语“包括”、“包含”和/或“含有”意思是指所关联的整数,步骤、操作、元素和/或组件存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或组的存在或在该系统/方法中可以添加其他特征、整数、步骤、操作、元素、组件和/或组。
26.考虑到以下描述,本说明书的这些特征和其他特征、以及结构的相关元件的操作和功能、以及部件的组合和制造的经济性可以得到明显提高。参考附图,所有这些形成本说明书的一部分。然而,应该清楚地理解,附图仅用于说明和描述的目的,并不旨在限制本说明书的范围。还应理解,附图未按比例绘制。
27.本说明书中使用的流程图示出了根据本说明书中的一些实施例的系统实现的操作。应该清楚地理解,流程图的操作可以不按顺序实现。相反,操作可以以反转顺序或同时实现。此外,可以向流程图添加一个或多个其他操作。可以从流程图中移除一个或多个操作。
28.为了方便展示,在开始描述之前,我们将对后面的描述中将会引用的术语进行如下解释:
29.云原生:一种构建和运行应用程序的方法。通过将大量物理机资源组织起来,对外提供高可用、可扩展的服务能力,方便应用容器的部署编排与维护。
30.物理机:一台实体的服务器,包括硬件和系统,比如linux,windows,在本文中与该概念相对的是容器。
31.容器(linux container):通过资源隔离技术,将物理机的资源(比如处理器,内存,磁盘等)划分为多个资源池,使得某个应用程序可以独立的使用某个资源池而不受其他应用程序的影响,我们将划分出来的资源池和使用这部分资源池的应用程序称为一个容
器。
32.日志:应用程序为了记录自身的状态和运行过程,将这些信息通过写入文件的方式记录下来,这些记录下来的数据称为日志,数据所在的文件称为日志文件。
33.虚拟文件系统(virtual file systems,简称vfs):linux中的一种虚拟的文件操作界面,它是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。虚拟文件系统(vfs)是物理文件系统与服务之间的一个接口层,它对linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在linux核心以及系统中运行的其他进程看来,都是相同的。严格说来,vfs并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。vfs在系统启动时建立,在系统关闭时消亡。
34.现有技术中的日志采集一般分为两种。一种是容器内采集。另一种是物理机挂载文件目录采集。所述容器内采集是指将采集进程作为sidecar和应用进程一起部署在容器内。容器内的日志仍然写入物理机本地存储文件中,采集进程读取文件数据并发送给远端服务主机。所述容器内采集的方法中,同一台物理机上的容器之间共享存储资源。不同容器中的日志在磁盘中的存储路径不同。当日志文件数较多时,不同日志的日志数据写入相当于根据日志的存储路径不同随机写入磁盘的不同位置。虽然容器对应的存储容量是分配的,但所有容器的日志写入都要通过同一个磁盘进行写入,同一个磁盘的写入能力是有限的。当日志文件较多时,日志数据写入时会在磁盘的不同存储路径之间随机并且频繁切换,会导致写入性能降低。同时由于各个容器之间争抢输入输出资源,引起容器之间文件写入相互影响。当某个容器的大量写入时可能阻塞其他容器的写入请求,无法做到资源隔离。而且,将采集进程和应用进程一起部署在容器内,在做升级或扩容时,必须在容器内部署日志采集程序,会导致部署运维困难。同时,由于应用容器启动后,需再花时间部署采集程序,使得日志采集程序会晚于应用容器启动,可能导致日志采集延迟或丢失。
35.所述物理机挂载文件目录采集是指在每台物理机上部署一个独立的采集程序,采集所在物理机上的所有容器的日志文件。容器日志仍然写入物理机本地存储文件中,并使用目录挂载技术,使得文件目录对日志采集程序可见。但当日志文件较多时,日志数据写入时依然会在磁盘的不同存储路径之间随机并且频繁切换,会导致写入性能降低。
36.图1示出了根据本说明书的实施例提供的一种日志采集系统001的应用环境图。本说明书提供的日志采集方法,可以应用于如图1所示的应用环境中。如图1所示,所述日志采集系统001可以包括远端主机200以及物理机400。
37.开发者002(也可以叫做用户002)对应主机200。主机200中可以包括api server和控制器。物理机400可以通过网络与主机200进行通信。开发者002可以通过所述api server对物理机400进行操作。所述控制器可用于实现针对物理机400的多种配置。
38.物理机400可以包括具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需必要的程序。物理机400具体可以是计算机、终端设备的主机等。物理机400的数量可以为一个或多个。图1中只示出了一个物理机400。物理机400可以包括user410、kernel420以及device430。user410为用户空间,用于执行应用程序的运行逻辑。kernel420为内核空间,被配置为控制文件系统。device430为存储空间,用于管理存储资源,包括硬盘432。
39.物理机400中可以包括有多个应用pod440。应用pod440可以在user410上运行。应用pod440是最小可部署单元。一个应用pod440代表了运行的一个工作负载。一个应用
pod440pod是指一组容器的集合。即一个应用pod440可以包括一个或多个容器。多个容器共享网络等系统资源,共同提供一种应用服务。其中,容器为docker容器。每个应用pod440拥有唯一的ip地址以及唯一的应用标识(id)。每个应用pod440的ip地和应用标识(id)一一对应。一个应用pod440中的多个容器442将始终在同一个物理机400上运行。在一个应用pod440里面的容器共享网络和存储,即实现共享一组的namespace去替代每个容器各自的namespace,来实现内部的通信。namespace是指对象,表示一个相对隔离的命名空间。虽然网络存储都是共享的,但是cpu和memory不是。多容器之间可以有属于自己的cgroup,也就是说我们可以单独的对应用pod440中的容器做资源(mem/cpu)使用的限制。
40.物理机400中可以包括日志文件系统450。日志文件系统450可以包括目标pod452以及驱动器454。驱动器454可以在kernel420上运行。目标pod452可以在user410上运行。目标pod452是基于daemonset方式部署的,能够保证在每一个物理机400上都有一个目标pod452副本。目标pod452中可以包括日志采集进程,用于将应用pod440中的容器442生成的日志写入物理机400的硬盘432中,并读取日志数据发送给主机200。
41.目标pod452可以包括目标控制器453、目标handlers455以及目标storage457。目标控制器453可以实现对目标pod452的多种配置。目标handlers455为请求分发组件,可以接收数据请求,并根据数据请求的类型调用不同的目标storage457用于执行所述数据请求。所述数据请求可以是任意形似数据请求,比如日志数据写入、日志数据采集或读取,等等。
42.在一些实施例中,日志文件系统450还可以包括目标文件459。目标文件459对应的存储路径为所述物理机400的共享内存。即目标文件459可以运行在kernel420上。
43.图2示出了根据本说明书的实施例提供的一种物理机400的硬件结构图。物理机400可以执行本说明书描述的日志采集方法。所述日志采集方法将在后面的描述中详细介绍。物理机400可以包括至少一个处理器470和至少一个存储介质480。在一些实施例中,物理机400还可以包括通信模块490。
44.存储介质480可以包括数据存储装置。所述数据存储装置可以是非暂时性存储介质,也可以是暂时性存储介质。比如,所述数据存储装置可以包括磁盘、只读存储介质(rom)或随机存取存储介质(ram)中的一种或多种。存储介质480还包括存储在所述数据存储装置中的至少一个指令集。所述指令是计算机程序代码,所述计算机程序代码可以包括执行本说明书提供的日志采集方法的程序、例程、对象、组件、数据结构、过程、模块等等。
45.至少一个处理器470可以同至少一个存储介质480通信连接。至少一个处理器470用以执行上述至少一个指令集。当物理机400运行时,至少一个处理器470读取所述至少一个指令集,并且根据所述至少一个指令集的指示执行本说明书提供的日志采集方法。处理器470可以执行日志采集方法p100包含的所有步骤。处理器470可以是一个或多个处理器的形式,在一些实施例中,处理器470可以包括一个或多个硬件处理器,例如微控制器,微处理器,精简指令集计算机(risc),专用集成电路(asic),特定于应用的指令集处理器(asip),中央处理单元(cpu),图形处理单元(gpu),物理处理单元(ppu),微控制器单元,数字信号处理器(dsp),现场可编程门阵列(fpga),高级risc机器(arm),可编程逻辑器件(pld),能够执行一个或多个功能的任何电路或处理器等,或其任何组合。仅仅为了说明问题,在本说明书中物理机400中仅描述了一个处理器470。然而,应当注意,本说明书中物理机400还可以包
括多个处理器470,因此,本说明书中披露的操作和/或方法步骤可以如本说明书所述的由一个处理器执行,也可以由多个处理器联合执行。例如,如果在本说明书中物理机400的处理器470执行步骤a和步骤b,则应该理解,步骤a和步骤b也可以由两个不同处理器470联合或分开执行(例如,第一处理器执行步骤a,第二处理器执行步骤b,或者第一和第二处理器共同执行步骤a和b)。
46.通信模块490可以与处理器470连接,用于物理机400同外界的数据通讯。通信模块490可以包括有线通信模块和无线通信模块中的至少一种。所述有线通信模块所采用的通信方式包括但不局限于移动高清链接技术(hml)、通用串行总线(usb)、高清多媒体接口(hdmi),等等。所述无线通信模块所采用的通信方式包括但不局限于无线保真技术(wifi)、蓝牙通信技术、低功耗蓝牙通信技术、基于ieee802.11s的通信技术,等等。
47.图3示出了根据本说明书的实施例提供的一种日志采集方法p100的流程图。如前所述,物理机400可以执行本说明书所述的日志采集方法p100。具体地,处理器480可以读取存储在其本地存储介质中的指令集,然后根据所述指令集的规定,执行本说明书所述的日志采集方法p100。所述方法p100可以应用于日志采集系统001中的每个物理机400中。在一些实施例中,所述方法p100可以包括:
48.s120:构建目标pod452。
49.具体地,步骤s120可以是:接收基于daemonset方式部署的所述目标pod452。每个物理机400上可以构建一个目标pod452,用于对当前所在物理机400上的应用pod440中的容器442在运行过程中产生的日志进行写入和采集。如前所述,所述目标pod452可以包括日志采集进程。
50.具体地,物理机400可以基于构建信息创建对应的任务对象,即目标pod452。其中,构建信息可以包括目标pod452需要执行的多个不同的阶段(子任务)。各个不同阶段之间以并行或者串行的方式组合,即各个子任务之间的执行顺序。例如,本说明书中物理机400可以利用k8s的job对象进行构建。一个job对象表示执行一次构建任务。即通过使用k8s的job调度多容器实现多阶段的任务构建。具体的,物理机400可以根据构建信息中的每个阶段创建一个对应的容器,这些容器组成目标pod452,由一个job对象进行统一管理。
51.在一些实施例中,在构建好目标pod452后,物理机400还可以对目标pod452进行目录挂载和资源配置。如图3所示,所述方法p100还可以包括:
52.s130:对所述目标pod452进行目录挂载和资源配置。
53.所述挂载可以是将同一个物理机400中同一个应用pod440中的不同容器的挂载目录通过挂载至指定的目录中,从而共享挂载目录中的文件。挂载可以实现资源共享。将应用pod440中的文件目录挂载至目标pod452中,可以使被挂载目录下的文件对目标pod452可见,以将被挂载目录下的文件共享至目标pod452中。图4示出了根据本说明书的实施例提供的一种目录挂载和资源配置的方法流程图。图4示出了步骤s130。如图4所示,步骤s130可以包括:
54.s132:基于虚拟文件系统技术,将预先设定的目标目录挂载至所述目标pod452。
55.一个应用pod440在运行过程中,可能产生多种不同的日志。在这些日志中,有一部日志是需要进行永久化存储和向外输出的,比如,向主机200输出。而有一些日志是不需要永久化存储和输出的。为了保证需要永久化存储的日志和需要向外输出的日志可以被正常
永久化存储和输出,我们需要将这些日志的目录挂载至所述目标pod452中,使这些日志对目标pod452可见。为了方便描述,我们将这些需要永久化存储和输出的日志定义为目标日志。将所述目标日志的目录定义为目标目录。所述目标日志可以是所述目标目录下的文件。所述目标目录为预先设定好的目录,比如/home,再比如/logs,等等。
56.如前所述,虚拟文件系统技术可以使不同文件系统对接的接口。具体地,物理机400可以基于所述虚拟文件系统技术将所述挂载请求发送给驱动器454。驱动器454再将所述挂载请求发送给目标pod452,以实现将所述目标目录挂载至目标pod452中。物理机400在应用pod440启动时,即可基于所述虚拟文件系统技术将所述目标目录挂载至目标pod452中。物理机400可以将多个应用pod440中的每个应用pod440中的所述目标目录挂载至目标pod452。如前所述,一个应用pod440中可能包括一个或多个容器。物理机400可以将每个应用pod440中的所有容器的所述目标目录挂载至目标pod452。
57.如图4所示,步骤s130还可以包括:
58.s134:基于所述目标pod452对所述每个应用pod440所需资源进行配置。
59.如前所述,在步骤s132中,物理机400将应用pod440中的所述目标目录挂载至目标pod452中,使应用pod440中的所述目标目录对目标pod452可见。目标pod452在接收到所述挂载请求后,物理机400可以基于目标pod452对多个应用pod440进行资源配置,以确定每个应用pod440所需的存储资源,比如,每个应用pod440对应的存储位置以及存储空间大小等等。具体地,步骤s134可以包括:
60.s134-2:对所述每个应用pod440的监听端口进行配置。
61.在一些实施例中,目标pod452中还可以包括监听进程,对物理机400上的应用pod440中的容器进行监听,以监听应用pod440中是否有日志写入请求或日志读取请求。所述日志读取请求也可以叫做日志采集请求或日志收集请求。具体的监听方式及监听结果的表达形式可以根据实际需要确定,比如可以实时监听、按照预设时间间隔监听等,比如还可以以特定数值表征应用pod440中是否有日志写入请求或日志读取请求等。为获取每个应用pod440的监听结果,物理机400需对每个应用pod440进行监听端口的配置。每个应用pod440被配置一个唯一的监听端口。如前所述,每个应用pod440拥有一个唯一的ip地址和唯一的应用标识。每个应用pod440的监听端口、ip地址以及应用标识一一对应。
62.s134-4:对所述每个应用pod440在所述物理机400中对应的存储路径进行配置。
63.所述存储路径可以是每个应用pod440中的目标目录下的目标日志在物理机400的硬盘432中的存储位置。如前所述,同一个应用pod440中的不同容器间可以共享存储资源。即同一个应用pod440中的不同容器间的目标目录下的目标日志可以存储在同一个位置,即同一个存储路径下。物理机400可以根据不同的应用pod440,为每个应用pod440配置在物理机440的硬盘432中对应的存储路径。
64.s134-6:对所述每个应用pod440在所述物理机400中对应的存储空间大小进行配置。
65.物理机400不仅可以配置每个应用pod440在物理机440的硬盘432中对应的存储路径,还可以为每个应用pod440在物理机400的硬盘432中对应的存储空间的大小进行配置。
66.在一些实施例中,步骤s134还可以包括:
67.s134-8:对所述每个应用pod440的写入阈值进行配置。
68.在一些实施例中,物理机400还可以基于目标pod452对每个应用pod440的写入阈值进行配置,以限定每个应用pod440的最大写入能力。所述写入阈值的配置可以对每个应用pod440的输入输出进行限流和资源隔离,控制单个应用pod440的最大写入能力,防止其中一个应用pod440的大量写入造成堵塞,影响其他应用pod440的写入,从而避免日志丢失或延迟。所述写入阈值的配置可以避免多个应用pod440挣多输入输出资源,使多个应用pod440的目标日志都能均匀写入,提高日志写入性能,从而提高日志写入效率。
69.在一些实施例中,在步骤s132之前,步骤s130还可以包括:对目标pod452进行命令配置。命令配置是指根据配置的命令启动目标pod452中对应的容器中的进程执行相应的任务。
70.当目标pod452完成所述目录挂载和资源配置后,返回成功,应用pod440挂载完成并启动运行。
71.综上所述,步骤s130可以使所有应用pod440的目标目录挂载至目标pod452,从而使所有应用pod440的目标目录下的目标日志都对目标pod452可见。目标pod452可以实现对所有应用pod440的目标目录进行监听。每个应用pod440的创建和销毁都会通过所述目录挂载通知到目标pod452,使得目标pod452对应用pod440具备管控能力,可以进行资源分配和释放,不会出现采集延迟和日志丢失的情况。
72.如图3所示,所述方法p100还可以包括:
73.s140:将物理机400的多个应用pod440的日志写入请求发送给所述目标pod452。
74.如前所述,在应用pod440运行时,目标pod452可以对多个应用pod440进行监听。目标pod452可以实时监听应用pod440中运行的每个容器的状态,并读取每个容器对应的目标日志的信息,即所述目标目录下的日志信息。
75.每个应用pod440中对应一段应用程序的进程。应用pod440中的进程在运行过程中,应用pod440将会产生日志文件。所述日志文件中记录与应用pod440对应进程的运行状态、运行时间等信息。应用pod440生成日志文件可以是实时生成的。每个应用pod440可以产生多个日志文件。所述多个日志文件可以包括所述目标日志。当应用pod440产生所述目标日志时,物理机400可以基于所述虚拟文件系统技术将日志写入请求发送给目标pod452。具体地,物理机400可以基于所述虚拟文件系统技术将所述日志写入请求通过驱动器454转发给目标pod452。目标pod452接收所述日志写入请求,并调用对应的目标storage457接口执行写入处理。
76.所述日志写入请求中可以包括所述目标日志的属性及其对应的日志数据。所述目标日志的所述属性可以包括所述目标日志所属的应用pod440的应用标识。如前所述,每个应用pod440拥有一个唯一的应用标识。在一些实施例中,所述目标日志的所述属性还可以包括所述目标日志的日志名称、日志标识以及所述存储路径。所述目标日志的所述存储路径可以是所述目标日志所属应用pod440对应的存储路径。所述日志标识可以是所述目标日志对应的唯一的身份标识。所述日志数据可以是所述目标日志中的内容数据。
77.如图3所示,所述方法p100还可以包括:
78.s160:基于所述日志采集进程,将所述日志写入请求统一写入目标文件459中缓存。
79.为了提升日志写入性能,可以将所有应用pod440中产生的所述目标日志先统一写
入一个相同的文件中。在本说明书中,可以将所有应用pod440中产生的所述目标日志先统一写入所述目标文件459中。因此,目标pod452在对不同的应用pod440产生的所述目标日志进行写入时,通过先统一将不同的目标日志写入相同的目标文件459中,来代替直接将目标日志写入对应的存储路径中,避免目标pod452在写入时在磁盘的不同位置间频繁地来回切换,从而将随机写入变为顺序写入,提高写入的速度,提升写入性能,从而提升日志采集的效率。
80.在一些实施例中,所述将所述日志写入请求统一写入目标文件459中缓存,可以包括:将所述日志写入请求以键值对的形式写入所述目标文件459中。为了提高数据写入能力,可以在存储层采用lsm(log structure merge)的方式。目标pod452可以将所述日志写入请求组织成键值对的形式,写入目标文件459中。其中,所述键值对中的键包括所述目标日志的所述属性,比如键为《文件名,inode,offset》。其中,所述文件名可以是所述目标日志所属应用pod440的应用标识与所述目标日志的日志名称的集合。inode可以是所述目标日志的日志标识。offset可以是所述目标日志对应的所述存储路径。所述键值对中的值为所述目标日志的所述日志数据的数据字节流。
81.在一些实施例中,所述将所述日志写入请求顺序写入目标文件中还可以是其他数据存储方式,比如mysql,等等。
82.如图3所示,所述方法p100还可以包括:
83.s170:基于所述日志采集进程,将所述目标文件459中的所述目标日志按照所述应用标识分类存储至所述物理机400的硬盘432中。
84.图5示出了根据本说明书的实施例提供的一种存储至物理机400的方法流程图。图5与步骤s170对应。如图5所示,步骤s170可以包括:
85.s172:确定所述目标文件459的大小超过预设值。
86.如前所述,在步骤s160中,所述目标日志会先被统一写入到一个目标文件459中进行缓存。所述目标文件459可以是内存系统中的一个文件。所述目标文件459的存储空间是有限的。当所述目标文件459中的目标日志的大小超过预设值时,可以将所述目标文件459中的所有目标日志存储至物理机400的硬盘432中。
87.所述预设值可以是任意值。所述预设值可以是基于经验获取的。所述预设值也可以是基于实验方式获取的。所述预设值也可以是基于机器学习的方式获取的。在一些实施例中,所述预设值的大小可以与物理机400上运行的应平pod440的数量呈正比。在一些实施例中,所述预设值的大小可以由物理机400的内存大小决定。
88.如图5所示,步骤s170还可以包括:
89.s174:按照所述目标日志的所述应用标识的类别的顺序,将目标文件459中的所述目标日志存储至所述应用标识对应的存储路径中。
90.当目标文件459的大小超过预设值后,目标pod452可以将目标文件459中的所有目标日志按照所属应用pod452的应用标识进行分类,并依据分类结果,按照所述应用标识的类别将顺序地将所述目标日志存储至对应的存储路径中。比如,目标文件459中的目标日志分别所属n个应用pod440。其中,n为大于1的整数。在步骤s174中,目标pod452可以先将n个应用pod440中的第一个应用pod440对应的所有目标日志存储至其对应的存储路径中。然后,将n个应用pod440中的第二个应用pod440对应的所有目标日志存储至其对应的存储路
径中。以此类推。目标pod452以目标日志对应的应用标识的类别对目标日志进行顺序存储,而不是随机存储。因此,目标pod452可以在集中将位于同一个存储路径下的所有目标日志存储完成后,再存储下一类位于同一个存储路径下的所有目标日志。因此,目标pod452在对目标日志进行永久化存储时,不会在不同的存储路径之间频繁切换,而是集中顺序地存储,因此可以提高写入性能和写入效率。
91.如图3所示,在一些实施例中,所述方法p100还可以包括:
92.s190:基于所述日志采集进程,将所述目标文件459中的所述目标日志按照所述应用标识分类发送至远端主机200。
93.在一些实施例中,目标pod452可以接收日志读取请求。所述日志读取请求可以是主机200发送给物理机400的。目标pod452可以基于所述日志读取请求,将所述目标文件459中的所述目标日志按照所述应用标识分类发送至远端主机200。
94.目标pod452可以将目标文件459中的所有目标日志按照所属应用pod452的应用标识进行分类,并依据分类结果,按照所述应用标识的类别将目标文件459中的所述目标日志发送给主机200。比如,目标文件459中的目标日志分别所属n个应用pod440。其中,n为大于1的整数。在步骤s190中,目标pod452可以将n个应用pod440对应的n类目标日志发送给主机200。由于目标文件459位于内存中。因此,目标pod452可以直接从内存中将目标日志发送给主机200,而不是从硬盘432中读取后再发送,从而降低硬盘的输入输出、降低cpu消耗以及采集延迟。
95.在一些实施例中,目标pod452可以实时将所述目标文件459中的所述目标日志按照所述应用标识分类发送至远端主机200。在一些实施例中,目标pod452可以定时间隔将所述目标文件459中的所述目标日志按照所述应用标识分类发送至远端主机200。在一些实施例中,当目标文件459的大小达到预设值时,目标pod452可以将所述目标文件459中的所述目标日志按照所述应用标识分类发送至远端主机200。
96.综上所述,本说明书提供的日志采集方法p100以及系统001,通过构建目标pod452,用于对多个应用pod452的目标目录下的目标日志进行写入、采集等操作。所述日志采集方法p100及系统001可以将物理机400上的多个应用pod440中预先设定好的目标目录挂载至创建的目标pod452中,将目标目录下的所有目标日志的日志数据写入和采集由目标pod452接管。目标pod452将所有应用pod440的日志数据统一写入到一个目标文件459中。当目标文件459的大小超于预设值时,再将目标文件459中的目标日志按照所属应用pod440的应用标识进行分类,并根据分类结果,根据所述应用标识的类别将目标日志顺序写入应用pod440对应的存储路径中,使得对于存储设备的随机写变为顺序写,大大提高写入性能。所述日志采集方法p100及系统001通过目标pod452可以对应用pod440的输入输出进行限流和资源隔离,控制单个pod440的最大写入能力,防止对其他pod440的写入造成堵塞影响。远端主机200进行日志采集时无需从硬盘432中读取日志数据,可以直接从存储在内存上的目标文件459中采集,从而降低硬盘432的输入输出、降低处理器消耗,同时降低采集延迟。同时,日志采集进程的部署与应用pod440独立,用户无需关心对日志采集进程的运维操作,提高运维效率。并且,应用pod440的创建和销毁都会通过挂载的方式通知到目标pod452,使得目标pod452对应用pod440具备管控能力,可以进行资源分配和释放,不会出现采集延迟和日志丢失的情况。本说明书提供的日志采集方法p100及系统001,在多应用混合部署,特别是
云原生场景下,大大提高应用日志写入和采集效率,提高日志写入和采集性能,同时改善用户使用体验。
97.本说明书另一方面提供一种非暂时性存储介质,存储有至少一组用来进行日志采集的可执行指令。当所述可执行指令被处理器执行时,所述可执行指令指导所述处理器实施本说明书所述的日志采集方法p100的步骤。在一些可能的实施方式中,本说明书的各个方面还可以实现为一种程序产品的形式,其包括程序代码。当所述程序产品在计算设备(比如物理机400)上运行时,所述程序代码用于使计算设备执行本说明书描述的日志采集方法p100的步骤。用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)包括程序代码,并可以在计算设备上运行。然而,本说明书的程序产品不限于此,在本说明书中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统使用或者与其结合使用。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本说明书操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在计算设备上执行、部分地在计算设备上执行、作为一个独立的软件包执行、部分在计算设备上部分在远程计算设备上执行、或者完全在远程计算设备上执行。
98.上述对本说明书特定实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者是可能有利的。
99.综上所述,在阅读本详细公开内容之后,本领域技术人员可以明白,前述详细公开内容可以仅以示例的方式呈现,并且可以不是限制性的。尽管这里没有明确说明,本领域技术人员可以理解本说明书需求囊括对实施例的各种合理改变,改进和修改。这些改变,改进和修改旨在由本说明书提出,并且在本说明书的示例性实施例的精神和范围内。
100.此外,本说明书中的某些术语已被用于描述本说明书的实施例。例如,“一个实施例”,“实施例”和/或“一些实施例”意味着结合该实施例描述的特定特征,结构或特性可以包括在本说明书的至少一个实施例中。因此,可以强调并且应当理解,在本说明书的各个部分中对“实施例”或“一个实施例”或“替代实施例”的两个或更多个引用不一定都指代相同
的实施例。此外,特定特征,结构或特性可以在本说明书的一个或多个实施例中适当地组合。
101.应当理解,在本说明书的实施例的前述描述中,为了帮助理解一个特征,出于简化本说明书的目的,本说明书将各种特征组合在单个实施例、附图或其描述中。然而,这并不是说这些特征的组合是必须的,本领域技术人员在阅读本说明书的时候完全有可能将其中一部分设备标注出来作为单独的实施例来理解。也就是说,本说明书中的实施例也可以理解为多个次级实施例的整合。而每个次级实施例的内容在于少于单个前述公开实施例的所有特征的时候也是成立的。
102.本文引用的每个专利,专利申请,专利申请的出版物和其他材料,例如文章,书籍,说明书,出版物,文件,物品等,可以通过引用结合于此。用于所有目的的全部内容,除了与其相关的任何起诉文件历史,可能与本文件不一致或相冲突的任何相同的,或者任何可能对权利要求的最宽范围具有限制性影响的任何相同的起诉文件历史。现在或以后与本文件相关联。举例来说,如果在与任何所包含的材料相关联的术语的描述、定义和/或使用与本文档相关的术语、描述、定义和/或之间存在任何不一致或冲突时,使用本文件中的术语为准。
103.最后,应理解,本文公开的申请的实施方案是对本说明书的实施方案的原理的说明。其他修改后的实施例也在本说明书的范围内。因此,本说明书披露的实施例仅仅作为示例而非限制。本领域技术人员可以根据本说明书中的实施例采取替代配置来实现本说明书中的申请。因此,本说明书的实施例不限于申请中被精确地描述过的实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1