一种集群容器内文本日志的采集方法、系统及存储介质技术方案

技术编号:24573345 阅读:29 留言:0更新日期:2020-06-21 00:02
本发明专利技术涉及一种集群容器内文本日志的采集方法、系统及存储介质,所述的方法包括以下步骤S1:在服务器中部署监听采集程序的步骤;S2:容器中的日志文件路径挂载到emptydir卷步骤,将容器中的日志文件路径以emptydir卷的形式进行挂载;S3:获取运行状态中的容器ID值的步骤,动态监听程序读取处于运行状态下的需要日志采集的容器ID值;S4:获取文件路径的步骤,通过容器ID值读取“容器内文本日志”的文件路径:获取当前容器的详细信息,在“mounts”对象下找到容器中日志目录对应的宿主机目录;S5:日志的采集步骤,将日志文件路径通过监听程序动态的配置到文件采集程序的配置文件中,进行日志的采集。

Collection method, system and storage medium of text log in cluster container

【技术实现步骤摘要】
一种集群容器内文本日志的采集方法、系统及存储介质
本专利技术属于计算机
,具体涉及一种集群容器内文本日志的采集方法、系统及存储介质。
技术介绍
容器技术是一种比虚拟机技术更加节省计算资源也更加灵活的虚拟化技术。随着容器技术的发展,出现了不同种类的容器编排引擎,用于对容器进行管理,Kubernetes技术作为一种容器编排引擎,脱颖而出成为了容器编排领域的事实标准。在将容器技术应用到实际生产环境中时,由于技术门槛的缘故,仅仅使用Kubernetes进行应用系统部署显得比较困难,为此需要开发对Kubernetes集群进行管理的软件系统。日志作为应用的一个关键环节,尤其是在使用容器编排工具进行容器调度的动态环境下,程序的排错和健康状态的分析很多都依赖日志信息的收集。在容器平台这种动态的环境下,如何在应用的容器化过程中,方便快捷的自动发现和采集日志是将传统应用容器化部署的一个重要方面。在管理Kubernates集群的软件系统中,对所部署容器的标准日志的采集,是管理系统了解系统运行状态与排除错误的一种手段。容器日志有2大分类:第一类是“标准输出”,此类日志可以使用kubectllogs命令查看,代码中通过STDOUT、STDERR输出的信息,包括被重定向到标准输出的文本文件。第二类是“文本日志”,此类日志是存在于容器内部并且没有被重定向到标准输出的日志。针对第二类日志,目前无法通过Kubernates或docker提供的命令或者API获取。以上两种日志的生命周期都与容器的生命周期相同,如果把日志保存在容器内部,则日志会随着容器的销毁而被删除。由于容器的生命周期相对虚拟机大大缩短,创建销毁属于常态,因此需要一种方式持久化的保存日志。现有技术中对于上述第二类日志的采集,通常采用以下两种方式:第一种方式,将需要采集的日志文件,通过hostpath或持久卷的形式挂载到宿主机或存储中,然后将挂载出来的路径配置到采集工具中进行采集。第二种方式,使用sidecar的方式,在同一个pod中,一个容器是应用容器,另外一个容器是日志采集容器。这种方式,需要在应用容器中,将需要采集的日志文件,以EmptyDir的挂载方式,挂载出来。这种挂载方式,可以实现pod内挂载空间的共享。从而实现日志采集容器可以采集应用容器日志。但是,以上两种方案存在不同程度的低应用特性:第一种方案,会占用大量的存储空间,同时,当需要采集的应用较多时,出现挂载路径混乱的情况,难以管理。第二种方案,每一个pod中,都会有一个sidecar容器运行,在大规模应用的情况下,这种方式会消耗大量资源。有鉴于此,本申请提供一种集群容器内文本日志的采集方法、系统及存储介质;以解决现有技术中存在的缺陷,是非常有必要的。
技术实现思路
针对现有技术中存在的在获取文本日志所采用的方案占用大量的存储空间并且出现挂载路径混乱,以及消耗大量资源的问题,本专利技术提供一种集群容器内文本日志的采集方法、系统及存储介质,以解决上述技术问题。为实现上述目的,本专利技术给出以下技术方案:第一方面,本专利技术提供一种集群容器内文本日志的采集方法,包括以下步骤:S1:在服务器中部署监听采集程序的步骤,每个物理节点上以守护进程的方式部署监听采集程序,这个监听采集程序包括2个进程:容器监听进程+文件采集进程;S2:容器中的日志文件路径挂载到emptydir卷步骤,将容器中的日志文件路径以emptydir卷的形式进行挂载;S3:获取运行状态中的容器ID值的步骤,动态监听程序读取处于运行状态下的容器ID值;S4:获取文件路径的步骤,通过容器ID值读取“容器内文本日志”的文件路径,获取当前容器的详细信息,在“mounts”对象下找到容器内日志路径对应的宿主机路径;S5:日志的采集步骤,将日志文件路径通过监听程序动态的配置到文件采集程序的配置文件中,进行日志的采集。作为优选,所述的步骤S1中,采用fluntd工具或者filebeat工具作为文件采集程序;上述两种文件采集工具均为配置化的采集方式,将需要采集的文件路径,配置到采集工具的配置文件中,即可进行数据的采集。作为优选,所述步骤S4中,调用Docker应用容器引擎的API指令:/containers/<container-id>/json,获取当前容器的详细信息;该API指令能够准确的获取当前容器的详细信息,尤其是“mounts”对象信息。第二方面,本专利技术提供一种集群容器内文本日志的采集系统,包括:部署监听采集程序模块,该模块中,每个物理节点上以守护进程的方式布置监听采集程序,监听采集程序包括2个进程:容器监听进程+文件采集进程,将目标采集日志的文件路径配置到文件采集程序的配置文件中,读取目标采集日志文件内的数据;容器中的日志文件挂载模块,该模块中,将容器中的日志以emptydir卷的形式进行挂载,挂载后在Docker应用容器的详细信息中,找到容器内日志文件路径所有对应的宿主机路径;获取容器ID值模块,该模块中,动态监听程序读取处于运行状态下的容器ID值;获取文件路径模块,该模块中,通过容器ID值读取“容器内文本日志”的文件路径,获取当前容器的详细信息,在“mounts”对象下找到容器中日志文件路径对应的宿主机文件路径;日志采集模块,该模块中,将日志文件路径通过监听程序动态的配置到文件采集程序的配置文件中,进行日志的采集。作为优选,所述的部署监听采集程序模块中,采用fluntd工具或者filebeat工具作为文件采集程序;上述两种文件采集工具均为配置化的采集方式,将需要采集的文件路径,配置到采集工具的配置文件中,即可进行数据的采集。作为优选,所述获取文件路径模块中,调用Docker应用容器引擎的API指令:/containers/<container-id>/json,获取当前容器的详细信息;该API指令能够准确的获取当前容器的详细信息,尤其是“mounts”对象信息。第三方面,提供了一种计算机存储介质,所述计算机存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。本专利技术的有益效果在于,使得Kubernetes集群管理软件能够以最轻量级,最高效,无侵入的方式进行容器内文本日志的采集。解决了传统容器内文本日志采集时的高冗余,高耗能,管理困难的问题。避免了现有技术中,在采集日志过程时,需要占用大量存储空间消耗大量资源以及挂载混乱的问题出现。此外,本专利技术设计原理可靠,结构简单,具有非常广泛的应用前景。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的本文档来自技高网
...

【技术保护点】
1.一种集群容器内文本日志的采集方法,其特征在于,包括以下步骤:/nS1:在服务器中部署监听采集程序的步骤,/n每个物理节点上以守护进程的方式部署监听采集程序,这个监听采集程序包括2个进程:容器监听进程+文件采集进程;/nS2:容器中的日志文件路径挂载到emptydir卷步骤,/n将容器中的日志文件路径以emptydir卷的形式进行挂载;/nS3:获取运行状态中的容器ID值的步骤,/n动态监听程序读取处于运行状态下的需要日志采集的容器ID值;/nS4:获取文件路径的步骤,/n通过容器ID值读取“容器内文本日志”的文件路径:获取当前容器的详细信息,在“mounts”对象下找到容器中日志目录对应的宿主机目录;/nS5:日志的采集步骤,/n将日志文件路径通过监听程序动态的配置到文件采集程序的配置文件中,进行日志的采集。/n

【技术特征摘要】
1.一种集群容器内文本日志的采集方法,其特征在于,包括以下步骤:
S1:在服务器中部署监听采集程序的步骤,
每个物理节点上以守护进程的方式部署监听采集程序,这个监听采集程序包括2个进程:容器监听进程+文件采集进程;
S2:容器中的日志文件路径挂载到emptydir卷步骤,
将容器中的日志文件路径以emptydir卷的形式进行挂载;
S3:获取运行状态中的容器ID值的步骤,
动态监听程序读取处于运行状态下的需要日志采集的容器ID值;
S4:获取文件路径的步骤,
通过容器ID值读取“容器内文本日志”的文件路径:获取当前容器的详细信息,在“mounts”对象下找到容器中日志目录对应的宿主机目录;
S5:日志的采集步骤,
将日志文件路径通过监听程序动态的配置到文件采集程序的配置文件中,进行日志的采集。


2.根据权利要求1所述的一种集群容器内文本日志的采集方法,其特征在于,所述的步骤S1中,采用fluntd工具或者filebeat工具作为文件采集程序。


3.根据权利要求1或2所述的一种集群容器内文本日志的采集方法,其特征在于,所述步骤S4中,调用Docker应用容器引擎的API指令:/containers/<container-id>/json,获取当前容器的详细信息;该API指令能够准确的获取当前容器的详细信息,尤其是“mounts”对象信息。


4.一种集群容器内文本日志的采集系统,其特征在于,包括:
部署监听采集程序模块,该模块中,每个物理节点上以守护进程的方...

【专利技术属性】
技术研发人员:崔润兴
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

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

1