一种基于K8S环境的业务日志数据处理方法及装置与流程

未命名 08-25 阅读:144 评论:0

一种基于k8s环境的业务日志数据处理方法及装置
技术领域
1.本技术涉及数据存储技术领域,尤其涉及一种基于k8s环境的业务日志数据处理方法及装置。


背景技术:

2.kubernetes是一种全新的基于容器技术的分布式架构解决方案,是google开源的一个容器集群管理系统,kubernetes简称k8s。目前,基于k8s集群环境的部署模式,凭借其资源利用率高、横向高扩展、自我修复等优势,正在逐渐替代传统的虚拟机或物理机部署模式,逐渐成为主流。
3.对日志数据进行分析,为业务系统提供数据支持,挖掘业务价值,成为了越来越多的系统的核心需求,在k8s环境中,最小管理单元pod在每次重启都会改变ip以及文件目录,因此,基于k8s环境的日志存储方法与传统的虚拟机或物理机部署模式无法通用。现亟需一种基于k8s环境的业务日志数据处理方法,能够实现在k8s集群环境下的业务日志存储。


技术实现要素:

4.有鉴于此,本技术提供了一种基于k8s环境的业务日志数据处理方法及装置,用以实现在k8s集群环境下的业务日志存储。
5.其技术方案如下:
6.第一方面,本技术实施例提供了一种基于k8s环境的业务日志数据处理方法,所述方法应用于k8s集群,所述方法包括:
7.基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;
8.基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。
9.可选的,所述第一主机至少部署有第一业务系统,所述业务日志数据具体为json格式。
10.可选的,所述第一主机至少部署有第一业务系统,包括:
11.将所述第一业务系统对应的程序打包为docker镜像;
12.将所述docker镜像部署于所述k8s集群中的第一主机,并将所述第一业务系统的日志输出目录配置为第一目录。
13.可选的,所述方法还包括:
14.基于configmap生成所述预设的daemon程序的定时配置文件,所述定时配置文件指示所述预设的daemon程序的日志获取时间节点;
15.所述预设的daemon程序部署于所述第一主机,包括:
16.将所述定时配置文件挂载至所述预设的daemon程序,以得到第一定时转储程序;
17.将所述第一定时转储程序部署至所述第一主机,并将所述第一定时转储程序的挂载目录配置为第二目录,其中,所述第二目录的目录层级高于所述第一目录的目录层级。
18.可选的,所述基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统,包括:
19.基于minio gateway指令,在所述k8s集群中配置minio s3网关服务;
20.通过所述minio s3网关服务将所述业务日志数据上传至所述预设的文件存储系统中的第三目录;
21.配置所述预设的文件存储系统的hive外表,并将所述hive外表指向所述第三目录。
22.可选的,所述预设的文件存储系统包括:hadoop分布式文件系统hdfs。
23.第二方面,本技术实施例提供了一种基于k8s环境的业务日志数据处理装置,所述装置包括:
24.日志获取模块,用于基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;
25.日志转储模块,用于基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。
26.可选的,所述第一主机至少部署有第一业务系统,所述业务日志数据具体为json格式。
27.可选的,所述日志转储模块,包括:
28.网关启动子模块,用于基于minio gateway指令,在所述k8s集群中配置minio s3网关服务;
29.日志上传子模块,用于通过所述minio s3网关服务将所述业务日志数据上传至所述预设的文件存储系统中的第三目录;
30.外表配置子模块,用于配置所述预设的文件存储系统的hive外表,并将所述hive外表指向所述第三目录。
31.上述技术方案具有如下有益效果:
32.本技术实施例提供的一种基于k8s环境的日志数据处理方法,在执行所述方法时,基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。从以上技术方案可以看出,本技术实施例基于预设的daemon程序以及minio s3网关服务实现k8s集群下的业务日志存储。
33.本技术实施例还提供了与上述方法相对应的装置,具有与上述方法相同的有益效果。
附图说明
34.为了更清楚地说明本技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例。
35.图1为本技术实施例提供的一种基于k8s环境的日志数据处理方法的流程示意图;
36.图2为本技术实施例提供的一种基于k8s环境的日志数据处理装置的机构示意图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
38.为了实现在k8s集群环境下的业务日志存储,本技术实施例提供了一种基于k8s环境的业务日志数据处理方法,图1示出的该方法的流程示意图,该方法应用于k8s集群,该方法可以包括:
39.步骤s100:基于预设的daemon程序获取第一主机的业务日志数据。
40.具体的,第一主机可以是k8s集群中的任一宿主机,第一主机上部署有至少一个业务系统,作为一种示例,第一主机至少包括第一业务系统。
41.预设的daemon程序是开发人员预先开发的daemon程序,部署于对应的主机,后续以k8s的daemonset的方式启动和运行,在k8s集群中,pod是所有业务的基础,也是k8s管理的最小单位级,它是一个或多个容器的组合,这些容器共享存储、网络和命名空间,预设的daemon程序可以获取主机上各个pod的业务日志文件。
42.k8s中的各个pod可以采取挂载volume数据卷的方式,将输出的业务日志数据保存至对应主机的固定目录中,目录中可以包括namespace、pod名,从而区分不同pod的日志。
43.可以理解的是,集群中各个部署有业务系统的主机都需要对应部署有daemon程序以采集主机上业务系统所产生的业务数据。
44.需要说明的是,本技术实施例不对k8s集群中的主机数量做出限定。
45.在一种可选的实施方式中,业务日志数据具体为json格式。
46.具体的,第一业务系统可以为java程序,采用spring boot框架开发,具有logback日志组件,因此,可以通过引入logstash-logback-encoder组件,在logback的配置文件中,对appender设置encoder为logstashencoder,将第一业务系统的业务日志输出格式设置为json格式,使得后续daemon程序获取第一主机的业务日志数据为json格式。需要说明的是,第一业务系统也可以为基于golang语言开发的go程序,能够保证第一业务系统输出的业务日志为json格式的程序均适用。
47.作为一种示例,本技术示例的业务日志数据具体格式可以如下所示:
[0048][0049]
由于后续对于业务日志数据进行机器分析,json格式的业务日志数据格式更有利
于日志格式的扩展,添加及删除字段都更加灵活,同时有利于后续文件存储系统对日志数据的管理。例如通过数据仓库工具hive提供的支持对json的序列化和反序列化功能,以及支持对json格式的外部表定义功能。
[0050]
在一种可选的实施方式中,本技术实施例中第一主机部署第一业务系统可以包括:
[0051]
将第一业务系统对应的程序打包为docker镜像;
[0052]
将docker镜像部署于k8s集群中的第一主机,并将第一业务系统的日志输出目录配置为第一目录。
[0053]
具体的,将第一业务系统对应的程序打包为docker镜像,并将docker镜像部署至第一主机,同时配置第一业务系统的日志输出目录为第一目录,由此完成第一业务系统在k8s集群的部署。
[0054]
作为一种示例,配置第一业务系统的日志输出目录可以采用hostpath目录挂载方式,配置代码可以如下所示:
[0055][0056][0057]
在一种可选的实施方式中,由于对业务日志数据的存储实时性要求不高,因此,可以按照实际的日志获取需求设置定时任务按照预设周期获取业务日志数据,可以避免实时日志采集时,数据丢失或者重复的问题,保证转储的日志和实际日志的一致性,由此,本技术实施例所提供的方法还可以包括:
[0058]
步骤s101:基于configmap生成预设的daemon程序的定时配置文件。
[0059]
具体的,基于k8s的configmap生成daemon程序的定时配置文件,定时配置文件用于指示daemon程序的日志获取时间节点。
[0060]
步骤s102:将定时配置文件挂载至预设的daemon程序,以得到第一定时转储程序。
[0061]
具体的,将定时配置文件挂载为预设的daemon程序中的一个文件,得到第一定时转储程序,使得第一定时转储程序能够按照预设的日志获取时间节点获取第一主机的业务日志数据。
[0062]
在一种可选的实施方式中,本技术实施例中还可以对定时配置文件的文件匹配模式进行配置,例如通过"filepatterns"指令对获取的业务日志数据的名称和类型进行配置,例如:["xxx.json","*/yyy.json"],即获取xxx名称以及*/yyy名称的业务日志数据。
[0063]
作为一种示例,挂载定时配置文件的第一定时转储程序代码可以如下所示:
[0064][0065][0066]
步骤s103:将第一定时转储程序部署至第一主机,并将第一定时转储程序的挂载目录配置为第二目录,其中,所述第二目录的目录层级高于第一目录的目录层级。
[0067]
具体的,第一定时转储程序部署至第一主机后,还需要将其挂载目录配置为第二目录,第二目录的目录层级应该高于第一目录的目录层级,即第一定时转储程序挂载目录应该高于第一业务系统的日志输出目录的目录层级。
[0068]
可以理解的是,第一定时转储程序对应于宿主机目录比业务系统对应的pod目录高一层级,这样能够保证获取所有pod的业务日志数据,避免遗漏。作为一种示例,第一定时转储程序挂载目录为:/opt/applog/,第一业务系统的日志输出目录为:/opt/applog/${kubernetes.io/pod.namespace}/${kubernetes.io/pod.name}。
[0069]
步骤s200:基于minio s3网关服务将业务日志数据存储至预设的文件存储系统。
[0070]
具体的,minio服务提供s3网关功能,基于minio s3网关功能可以将业务日志数据存储至预设的文件存储系统。
[0071]
在一种可选的实施方式中,上述步骤s200具体可以包括如下步骤s201至步骤s203:
[0072]
步骤s201:基于minio gateway指令,在k8s集群中配置minio s3网关服务。
[0073]
具体的,可以通过minio gateway hdfs${minio_hdfs_namenode}指令,启动minio s3网关服务,并对环境变量进行配置,环境变量具体可以包括如下:
[0074]
hadoop_conf_dir hadoop配置目录,需要在该目录下放置hadoop的配置文件
[0075]
krb5keytab指向hadoop认证的keytab文件,用于kerberos认证
[0076]
krb5realm kerberos认证的域
[0077]
krb5username kerberos认证的用户名
[0078]
minio_access_key设置minio网关的访问键
[0079]
minio_secret_key设置minio网关的访问密码
[0080]
minio_hdfs_namenode hdfs地址/文件存储路径
[0081]
通过对以上环境变量的配置,在k8s集群中完成minio s3网关的启动。
[0082]
步骤s202:通过minio s3网关服务将业务日志数据上传至预设的文件存储系统中的第三目录。
[0083]
具体的,预设的daemon程序获取的业务日志数据可以通过minio s3网关上传至预设的文件存储系统中,并存储于文件存储系统第三目录中。由于minio s3网关接口的轻量化特点,基于minio s3网关实现k8s集群日志的转储方案部署更为简易。
[0084]
步骤s203:配置预设的文件存储系统的hive外表,并将hive外表指向第三目录。
[0085]
具体的,配置hive外表,将hive外表指向文件存储系统存储有业务日志数据的第三目录中,便于后续基于hive外表对业务日志数据进行离线分析。由于业务日志数据为json格式,当需要添加或删除某个字段,只需要变更对于hive外表定义即可适配需求。
[0086]
在一种可选的实施方式中,本技术实施例中,预设的文件存储系统可以包括:hadoop分布式文件系统hdfs。
[0087]
hadoop分布式文件系统(hadoop distributed file system,hdfs)是一个高度容错性的系统,适合部署在廉价的机器上,hdfs能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,并且有着高容错性的特点。
[0088]
综上所述,本技术实施例提供了一种基于k8s环境的日志数据处理方法,在执行所述方法时,基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。从以上技术方案可以看出,本技术实施例基于预设的daemon程序以及minio s3网关服务实现k8s集群下的业务日志存储。
[0089]
与上述方法相对应,本技术实施例还提供了一种基于k8s环境的日志数据处理装置,请参阅图2,示出了该装置的结构示意图,该装置可以包括:
[0090]
日志获取模块201,用于基于预设的daemon程序获取第一主机的业务日志数据,第一主机为所述k8s集群中的任一宿主机,预设的daemon程序部署于所述第一主机;
[0091]
日志转储模块202,用于基于minio s3网关服务将业务日志数据存储至预设的文件存储系统。
[0092]
在一种可选的实施方式中,本技术实施例中,所述第一主机至少部署有第一业务系统,业务日志数据具体为json格式。
[0093]
在一种可选的实施方式中,本技术实施例中,所述第一主机至少部署有第一业务系统,包括:将第一业务系统对应的程序打包为docker镜像;将docker镜像部署于k8s集群中的第一主机,并将第一业务系统的日志输出目录配置为第一目录。
[0094]
在一种可选的实施方式中,本技术实施例中,所述装置还包括:
[0095]
配置生成模块,用于基于configmap生成所述预设的daemon程序的定时配置文件,定时配置文件指示预设的daemon程序的日志获取时间节点;
[0096]
所述预设的daemon程序部署于第一主机,包括:
[0097]
将定时配置文件挂载至所述预设的daemon程序,以得到第一定时转储程序;
[0098]
将第一定时转储程序部署至第一主机,并将第一定时转储程序的挂载目录配置为第二目录,第二目录的目录层级高于第一目录的目录层级。
[0099]
在一种可选的实施方式中,本技术实施例中,所述日志转储模块202,包括:
[0100]
网关启动子模块,用于基于minio gateway指令,在所述k8s集群中配置minio s3网关服务;
[0101]
日志上传子模块,用于通过所述minio s3网关服务将所述业务日志数据上传至所述预设的文件存储系统中的第三目录;
[0102]
外表配置子模块,用于配置所述预设的文件存储系统的hive外表,并将所述hive外表指向所述第三目录。
[0103]
在一种可选的实施方式中,本技术实施例中,所述预设的文件存储系统包括:hadoop分布式文件系统hdfs。
[0104]
需要说明的是,本技术实施例提供的一种基于k8s环境的日志数据处理装置中各模块执行的步骤以及相关技术特征与申请实施例所提供方法相对应,装置部分的描述可以参见前述方法部分的实施例,此处不赘述。
[0105]
综上所述,本技术实施例提供了一种基于k8s环境的日志数据处理装置,所述装置包括:日志获取模块,用于基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;日志转储模块,用于基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。从以上技术方案可以看出,本技术实施例基于预设的daemon程序以及minio s3网关服务实现k8s集群下的业务日志存储。
[0106]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0107]
本领域技术人员可以理解,图所示的流程图仅是本技术的实施方式可以在其中得以实现的一个示例,本技术实施方式的适用范围不受到该流程图任何方面的限制。
[0108]
在本技术所提供的几个实施例中,应该理解到,所揭露的方法、装置和设备,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0109]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0110]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0111]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种基于k8s环境的业务日志数据处理方法,其特征在于,所述方法应用于k8s集群,所述方法包括:基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。2.根据权利要求1所述的方法,其特征在于,所述第一主机至少部署有第一业务系统,所述业务日志数据具体为json格式。3.根据权利要求2所述的方法,其特征在于,所述第一主机至少部署有第一业务系统,包括:将所述第一业务系统对应的程序打包为docker镜像;将所述docker镜像部署于所述k8s集群中的第一主机,并将所述第一业务系统的日志输出目录配置为第一目录。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:基于configmap生成所述预设的daemon程序的定时配置文件,所述定时配置文件指示所述预设的daemon程序的日志获取时间节点;所述预设的daemon程序部署于所述第一主机,包括:将所述定时配置文件挂载至所述预设的daemon程序,以得到第一定时转储程序;将所述第一定时转储程序部署至所述第一主机,并将所述第一定时转储程序的挂载目录配置为第二目录,其中,所述第二目录的目录层级高于所述第一目录的目录层级。5.根据权利要求1所述的方法,其特征在于,所述基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统,包括:基于minio gateway指令,在所述k8s集群中配置minio s3网关服务;通过所述minio s3网关服务将所述业务日志数据上传至所述预设的文件存储系统中的第三目录;配置所述预设的文件存储系统的hive外表,并将所述hive外表指向所述第三目录。6.根据权利要求1所述的方法,其特征在于,所述预设的文件存储系统包括:hadoop分布式文件系统hdfs。7.一种基于k8s环境的业务日志数据处理装置,其特征在于,所述装置包括:日志获取模块,用于基于预设的daemon程序获取第一主机的业务日志数据,所述第一主机为所述k8s集群中的任一宿主机,所述预设的daemon程序部署于所述第一主机;日志转储模块,用于基于minio s3网关服务将所述业务日志数据存储至预设的文件存储系统。8.根据权利要求7所述的装置,其特征在于,所述第一主机至少部署有第一业务系统,所述业务日志数据具体为json格式。9.根据权利要求7所述的装置,其特征在于,所述日志转储模块,包括:网关启动子模块,用于基于minio gateway指令,在所述k8s集群中配置minio s3网关服务;日志上传子模块,用于通过所述minio s3网关服务将所述业务日志数据上传至所述预设的文件存储系统中的第三目录;
外表配置子模块,用于配置所述预设的文件存储系统的hive外表,并将所述hive外表指向所述第三目录。

技术总结
本申请提供了一种基于K8S环境的日志数据处理方法及装置,其中,在执行所述方法时,基于预设的Daemon程序获取第一主机的业务日志数据,所述第一主机为所述K8S集群中的任一宿主机,所述预设的Daemon程序部署于所述第一主机;基于MinIO S3网关服务将所述业务日志数据存储至预设的文件存储系统。从以上技术方案可以看出,本申请实施例基于预设的Daemon程序以及MinIO S3网关服务实现K8S集群下的业务日志存储。存储。存储。


技术研发人员:封维波 杨毅 伍键 孙大成 蔡修明 尹以操
受保护的技术使用者:中国民航信息网络股份有限公司
技术研发日:2023.04.04
技术公布日:2023/8/22
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐