一种kubernetes环境下容器日志采集系统技术方案

技术编号:37991641 阅读:19 留言:0更新日期:2023-06-30 10:06
本发明专利技术公开一种kubernetes环境下容器日志采集系统,涉及日志采集技术领域,包括配置下发模块和日志采集模块,其中:配置下发模块以单副本或多副本的形式运行在节点上,监听节点上需要采集日志的容器变化,并动态下发采集配置到需要采集日志的容器所在节点的日志采集模块;日志采集模块以daemonset形式运行在各个节点上,监听采集配置下发指令,更新采集配置,动态加载采集配置,根据采集配置采集容器日志。本发明专利技术可以减少日志文件监听数量,减小采集文件范围,提高采集性能,节约平台算力。节约平台算力。节约平台算力。

【技术实现步骤摘要】
一种kubernetes环境下容器日志采集系统


[0001]本专利技术涉及日志采集
,具体的说是一种kubernetes环境下容器日志采集系统。

技术介绍

[0002]随着容器技术的火热,越来越多的公司采用容器技术搭建自己的业务应用系统,并使用kubernetes作为容器云平台进行资源调度、动态扩缩容等容器编排操作。如何精确的采集用户需要的日志,成为了容器化部署过程中不得不面对的一项挑战。
[0003]目前,针对日志采集精准化的解决方案是全量采集所有容器日志,然后在日志收集模块进行过滤,将不需要的日志进行去除,这种方式采集了大量的本不需要采集的日志,严重影响日志采集模块的性能,浪费了大量的平台算力。

技术实现思路

[0004]本专利技术针对目前技术发展的需求和不足之处,提供一种kubernetes环境下容器日志采集系统。
[0005]本专利技术的一种kubernetes环境下容器日志采集系统,解决上述技术问题采用的技术方案如下:
[0006]一种kubernetes环境下容器日志采集系统,包括配置下发模块和日志采集模块,其中:
[0007]配置下发模块以单副本或多副本的形式运行在节点上,监听节点上需要采集日志的容器变化,并动态下发采集配置到需要采集日志的容器所在节点的日志采集模块;
[0008]日志采集模块以daemonset形式运行在各个节点上,监听采集配置下发指令,更新采集配置,动态加载采集配置,根据采集配置采集容器日志。
[0009]可选的,所涉及配置下发模块包括采集配置发现组件、日志采集模块监听组件、下发采集配置组件,其中:
[0010]采集配置发现组件用于监听CRD中定义的CR资源,并在CR资源有创建、修改或删除操作时,触发执行创建、修改或删除事件,并调用下发采集配置组件下发采集配置;
[0011]日志采集模块监听组件用于监听日志采集模块,并在日志采集模块加载采集配置进行容器的添加操作时,查询创建该日志采集模块所在节点上所有容器的采集配置,并调用下发采集配置组件下发查询到的采集配置集合,在日志采集模块加载采集配置进行容器的修改或删除操作时,不做处理;
[0012]下发采集配置组件从接入的多个节点中查找到需要发送采集配置的节点,然后调用该节点上日志采集模块的配置更新组件,进行采集配置的添加、修改或删除。
[0013]进一步可选的,在kubernetes环境下,CRD中定义的CR资源包含status与spec两个模块,其中:
[0014]status模块下包括sended、nodes、paths三个字段,sended字段用于记录是否发送
完成的状态,nodes字段用于记录发送的节点,paths字段用于记录计算出的采集源路径;
[0015]spec模块下包括label、namespace、container、id四个字段,label字段用于记录要采集日志的容器的标签,可为空,namespace字段用于记录要采集日志的命名空间,可为空,container字段用于记录要采集日志的容器名称,可为空,id字段用于记录CR资源的id,通过uuid计算生成,且前述label字段、namespace字段、container字段的内容不能同时为空。
[0016]进一步可选的,所涉及CR资源有创建操作时,采集配置发现组件触发执行创建事件,具体过程如下:
[0017]创建CR资源,获取到CR资源中spec模块下的label、namespace、container字段,按照kubernetes针对容器标准输出日志的命名规则计算出当前需要采集的日志文件路径与所在节点,组装采集配置,调用下发采集配置组件向所有节点的日志采集模块添加采集配置,随后将status模块下sended字段的状态改为complete,维护status模块下的paths字段为计算出需要采集的日志文件路径,维护status模块下的nodes字段为计算出需要采集的日志文件所在节点;
[0018]创建一个watcher,该watcher监听符合CR资源中限定label、namespace、container条件的容器创建、修改或删除事件,当watcher监听的需要采集日志的容器新增、修改或删除时,动态计算出新的paths与nodes,并与CR资源中的paths与nodes进行比较,不一致则调用下发采集配置组件删除多余的节点采集配置,更新已有节点的采集配置,添加新节点的采集配置,并将新的paths与nodes维护到CR资源中。
[0019]进一步可选的,所涉及CR资源有修改操作时,采集配置发现组件触发执行修改事件,具体过程如下:
[0020]修改CR资源后,获取到CR资源中spec模块下的label、namespace、container字段,按照kubernetes针对容器标准输出日志的命名规则计算出当前需要采集的日志文件路径与所在节点;
[0021]将计算得到的日志文件路径与所在节点与CR资源中status模块下的paths与nodes进行比较,不一致则调用下发采集配置组件删除多余的节点采集配置,更新已有节点的采集配置,添加新节点的采集配置,并将计算得到的日志文件路径与所在节点维护到CR资源status模块下的paths字段与nodes字段,一致则不做处理;
[0022]随后根据CR资源中spec模块下的label、namespace、container字段修改watcher。
[0023]进一步可选的,所涉及CR资源有删除操作时,采集配置发现组件触发执行删除事件,具体过程如下:
[0024]删除CR资源时,根据CR资源中status模块下的nodes与id,调用下发采集配置组件删除节点中的配置文件,同时删除该CR资源中创建的watcher。
[0025]可选的,所涉及日志采集模块包括配置更新组件和日志采集组件,其中:
[0026]配置更新组件负责通过rest接口接收采集配置信息,随后对采集配置进行校验,并在校验通过后生成采集配置文件到指定路径下,供日志采集组件加载;
[0027]日志采集组件负责动态加载采集配置,并根据采集配置进行日志采集。
[0028]进一步可选的,所涉及配置更新组件通过rest接口接收的采集配置信息包括采集配置列表、采集配置id、采集配置进行的操作、采集配置的具体内容,其中,采集配置进行的
操作包括添加、修改、删除。
[0029]进一步可选的,所涉及配置更新组件基于采集配置信息生成采集配置文件的过程具体包括:
[0030](1)循环接收采集配置列表;
[0031](2)根据采集配置进行的操作执行添加、修改或删除操作,如果是删除操作,则直接删除以接收采集配置id命名的采集配置文件,然后进入下一循环,否则进入步骤(3);
[0032](3)对接收的采集配置内容进行合法性校验,如果校验未通过则记录失败数据,进入下一循环,否则进入步骤(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种kubernetes环境下容器日志采集系统,其特征在于,包括配置下发模块和日志采集模块,其中:配置下发模块以单副本或多副本的形式运行在节点上,监听节点上需要采集日志的容器变化,并动态下发采集配置到需要采集日志的容器所在节点的日志采集模块;日志采集模块以daemonset形式运行在各个节点上,监听采集配置下发指令,更新采集配置,动态加载采集配置,根据采集配置采集容器日志。2.根据权利要求1所述的一种kubernetes环境下容器日志采集系统,其特征在于,配置下发模块包括采集配置发现组件、日志采集模块监听组件、下发采集配置组件,其中:采集配置发现组件用于监听CRD中定义的CR资源,并在CR资源有创建、修改或删除操作时,触发执行创建、修改或删除事件,并调用下发采集配置组件下发采集配置;日志采集模块监听组件用于监听日志采集模块,并在日志采集模块加载采集配置进行容器的添加操作时,查询创建该日志采集模块所在节点上所有容器的采集配置,并调用下发采集配置组件下发查询到的采集配置集合,在日志采集模块加载采集配置进行容器的修改或删除操作时,不做处理;下发采集配置组件从接入的多个节点中查找到需要发送采集配置的节点,然后调用该节点上日志采集模块的配置更新组件,进行采集配置的添加、修改或删除。3.根据权利要求2所述的一种kubernetes环境下容器日志采集系统,其特征在于,在kubernetes环境下,CRD中定义的CR资源包含status与spec两个模块,其中:status模块下包括sended、nodes、paths三个字段,sended字段用于记录是否发送完成的状态,nodes字段用于记录发送的节点,paths字段用于记录计算出的采集源路径;spec模块下包括label、namespace、container、id四个字段,label字段用于记录要采集日志的容器的标签,可为空,namespace字段用于记录要采集日志的命名空间,可为空,container字段用于记录要采集日志的容器名称,可为空,id字段用于记录CR资源的id,通过uuid计算生成,且前述label字段、namespace字段、container字段的内容不能同时为空。4.根据权利要求3所述的一种kubernetes环境下容器日志采集系统,其特征在于,CR资源有创建操作时,采集配置发现组件触发执行创建事件,具体过程如下:创建CR资源,获取到CR资源中spec模块下的label、namespace、container字段,按照kubernetes针对容器标准输出日志的命名规则计算出当前需要采集的日志文件路径与所在节点,组装采集配置,调用下发采集配置组件向所有节点的日志采集模块添加采集配置,随后将status模块下sended字段的状态改为complete,维护status模块下的paths字段为计算出需要采集的日志文件路径,维护status模块下的nodes字段为计算出需要采集的日志文件所在节点;创建一个watcher,该watcher监听符合CR资源中限定label、namespace、container条件的容器创建、修改或删除事件,当watcher监听的需要采集日志的容器新增、修改或删除时,动态计算出新的paths与nodes,并与CR资源中的paths与nodes进行比较,不一致则调用下发采...

【专利技术属性】
技术研发人员:杨桂龙高传集赵山张建伟
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1