日志采集方法、装置、电子设备及计算机程序产品与流程
- 国知局
- 2025-01-10 13:33:53
本发明涉及计算机领域,具体而言,涉及一种日志采集方法、装置、电子设备及计算机程序产品。
背景技术:
1、在一个完整的信息系统中,日志系统扮演着举足轻重的作用。它能够记录下系统产生的所有行为,并按照设定的规范或格式输出。利用应用日志可以进行系统的排障、优化系统性能,或根据这些信息调整系统的行为。在安全领域,应用日志也是安全审计方面最重要的功能之一。
2、容器产品便凭借着隔离性好、可移植性高、资源占用少、启动迅速等特性迅速风靡世界,kubernetes(k8s)更是作为一种跨主机集群的容器调度平台,能实现对容器的自动化部署、扩展和操作。容器技术在部署、交付等环节给人们带来了很多便捷,但在日志处理领域却带来了许多新的挑战。主要包括如何创建一种持久化保持日志的方案,解决容器应用短生命周期的问题,同时还能帮助我们全局性的了解系统运行情况,迅速定位问题现场、还原上下文。
3、因此,一种合理的容器日志采集方案便显得尤为重要。现阶段采集k8s容器日志常见的有如下方案:
4、方案一,通过daemonset模式采集k8s容器日志,即每个节点上运行一个采集客户端。这种部署方式在容器运行时通过与节点上的docker.sock或者containerd.sock通信,以发现节点上所有容器,从返回的容器信息中获取容器的标准输出路径和存储路径,并挂载主机路径以采集数据,此种方式能采集运行在本节点上所有pod的日志。
5、若采用方案一,每个节点上只需部署一个采集容器,能节省资源且没有侵入性,但针对job容器这种增删频率高且生命周期很短的容器,由于k8s容器发现的机制依赖于和containerd.sock的通信,且containerd.sock不能实时获取容器的创建及销毁事件,只能通过轮询机制查询(轮训间隔为1s)容器的状态,就可能出现由于容器还未被发现就已经销毁而无法采集日志数据的情况。同时由于一个采集容器负责对节点上所有pod日志的采集,很容易会达到吞吐量的瓶颈。
6、方案二,通过sidecar模式采集k8s容器日志,即每个pod里以容器的形式运行一个采集客户端,此种方式利用k8s同一个pod内的容器可以共享存储卷的特性采集该pod的日志。
7、若采用方案二,由于需要将被采集的日志目录挂载出来与采集容器共享,因此无法直接采集容器的标准输出,只能采集输出到文件的日志。由于每个pod绑定一个采集容器,资源消耗较大,且容器的meta信息无法自动采集,需要通过环境变量等方式暴露到采集容器中。同时由于和pod进行绑定,因此具有较强的侵入性,当agent crash时会对业务容器产生影响。
8、方案三,采用sidecar和daemonset相结合的方式进行日志采集,通过sidecar采集应用日志,通过daemonset采集系统日志。在每个节点服务器上配置有一个daemonset工作负载,通过daemonset工作负载采集对应节点服务器上的系统日志;在每个pod上配置一个sidecar采集pod日志。
9、若采用方案三,能同时采集节点服务器的系统日志和容器应用的日志,但依旧存在对应用的侵入性;当主机日志的吞吐量过大时容易造成系统瓶颈。
10、综上,现阶段的容器日志采集方案,只能针对预先配置的采集方式进行日志采集,而无法合理利用采集日志的资源消耗,并且在主机日志的吞吐量过大造成系统瓶颈的情况下,无法准确地完成对日志的采集,从而存在日志采集效率低的问题。
11、针对上述日志采集效率低的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本发明实施例提供了一种日志采集方法、装置、电子设备及计算机程序产品,以至少解决日志采集效率低的技术问题。
2、根据本发明实施例的一个方面,提供了一种日志采集方法,包括:按照预设时间间隔,轮询监测待采集对象中每个容器组产生应用日志的第一日志产生速率,得到所述待采集对象产生所述应用日志的第二日志产生速率,其中,所述待采集对象包括多个所述容器组;在所述第二日志产生速率超过预设速率阈值的情况下,将所述待采集对象中的多个所述容器组划分为第一容器组集合和第二容器组集合,其中,所述第一容器组集合中的多个所述容器组产生所述应用日志的总速率为第三日志产生速率,所述第三日志产生速率不超过所述预设速率阈值;采用管理模式采集所述第一容器组集合中的多个所述容器组产生的所述应用日志,其中,所述管理模式用于在所述待采集对象的每个计算节点上运行一个第一采集容器,所述第一采集容器用于采集同一所述计算节点中所有容器组产生的所述应用日志;采用边车模式采集所述第二容器组集合中多个所述容器组产生的所述应用日志,其中,所述边车模式用于在所述待采集对象的每个所述容器组中运行一个第二采集容器,所述第二采集容器用于采集所述容器组产生所述应用日志。
3、可选地,按照预设时间间隔,轮询监测待采集对象中每个容器组产生应用日志的第一日志产生速率,得到所述待采集对象产生所述应用日志的第二日志产生速率包括:检测所述待采集对象中每个所述容器组对应控制器的控制器类型,其中,所述控制器类型至少包括:第一预设类型和第二预设类型,所述第一预设类型的控制器对应的所述容器组为第一类容器组,所述第二预设类型的控制器对应的所述容器组为第二类容器组;采用所述管理模式采集多个所述第一类容器组产生的所述应用日志;按照预设时间间隔,轮询监测多个所述第二类容器组产生所述应用日志的速率,得到所述第一日志产生速率,并统计所述第一日志产生速率之和,得到所述第二日志产生速率。
4、可选地,在采用管理模式采集所述第一容器组集合中的多个所述容器组产生的所述应用日志之后,所述方法还包括:监测所述待采集对象中是否存在新增容器应用,其中,所述新增容器应用用于生成多个副本容器组,所述副本容器组为所述待采集对象中存在的所述容器组的副本;在所述待采集对象中存在所述新增容器应用的情况下,确定所述待采集对象产生的所述应用日志的第四日志产生速率,其中,所述第四日志产生速率为所述第三日志产生速率与多个所述副本容器组产生所述应用日志的第五日志产生速率之和;在所述第四日志产生速率超过所述预设速率阈值的情况下,采用所述边车模式采集所述副本容器组产生的所述应用日志;在所述第四日志产生速率不超过所述预设速率阈值的情况下,采用所述管理模式采集所述副本容器组产生的所述应用日志。
5、可选地,在采用管理模式采集所述第一容器组集合中的多个所述容器组产生的所述应用日志之后,所述方法还包括:监测所述第三日志产生速率的第一速率变化情况,其中,所述第一速率变化情况用于表示所述第三日志产生速率超过所述预设速率阈值的第一持续时长;在所述第一持续时长超过第一时长阈值的情况下,从所述第一容器组集合中选取多个所述容器组,得到第一容器组子集合,其中,所述第三日志产生速率与所述第一容器组子集合中多个所述容器组产生所述应用日志的第六日志产生速率之差不超过所述预设速率阈值;采用所述边车模式采集所述第一容器组子集合中的多个所述容器组产生的所述应用日志。
6、可选地,在所述第一持续时长超过第一时长阈值的情况下,从所述第一容器组集合中选取多个所述容器组,得到第一容器组子集合,包括:将第一容器组集合中每个所述容器组产生所述应用日志的第七日志产生速率按照从大到小的顺序排列,得到第一速率队列;在所述第一持续时长超过第一时长阈值的情况下,从所述第一速率队列的队尾截取多个所述容器组,得到所述第一容器组子集合,其中,截取的每个所述容器组产生所述应用日志的所述第七日志产生速率之和为所述第六日志产生速率。
7、可选地,在采用管理模式采集所述第一容器组集合中多个所述容器组产生的所述应用日志之后,所述方法还包括:监测所述第三日志产生速率的第二速率变化情况,和所述待采集对象中是否存在采用所述边车模式采集所述应用日志的情况,其中,所述第二速率变化情况用于表示所述第三日志产生速率不超过所述预设速率阈值的第二持续时长;在所述第二持续时长超过第二时长阈值,且所述待采集对象中存在采用所述边车模式采集所述应用日志的情况下,从所述第二容器组集合中选取多个所述容器组,得到第二容器组子集合,其中,所述第三日志产生速率与所述第二容器组子集合中多个所述容器组产生所述应用日志的第八日志产生速率之和不超过所述预设速率阈值;采用所述管理模式采集所述第二容器组子集合中的多个所述容器组产生的所述应用日志。
8、可选地,在所述第二持续时长超过第二时长阈值,且所述待采集对象中存在采用所述边车模式采集所述应用日志的情况下,从所述第二容器组集合中选取多个所述容器组,得到第二容器组子集合,包括:将第二容器组集合中每个所述容器组产生的所述应用日志的第九日志产生速率按照从大到小的顺序排列,得到第二速率队列;在所述第二持续时长超过第二时长阈值,且所述待采集对象中存在采用所述边车模式采集所述应用日志的情况下,从所述第二速率队列的队首截取多个所述容器组,得到所述第二容器组子集合,其中,截取的每个所述容器组产生所述应用日志的所述第九日志产生速率之和为所述第八日志产生速率。
9、根据本发明实施例的另一方面,还提供了一种日志采集装置,包括:监测模块,用于按照预设时间间隔,轮询监测待采集对象中每个容器组产生应用日志的第一日志产生速率,得到所述待采集对象产生所述应用日志的第二日志产生速率,其中,所述待采集对象包括多个所述容器组;划分模块,用于在所述第二日志产生速率超过预设速率阈值的情况下,将所述待采集对象中的多个所述容器组划分为第一容器组集合和第二容器组集合,其中,所述第一容器组集合中的多个所述容器组产生所述应用日志的总速率为第三日志产生速率,所述第三日志产生速率不超过所述预设速率阈值;第一采集模块,用于采用管理模式采集所述第一容器组集合中的多个所述容器组产生的所述应用日志,其中,所述管理模式用于在所述待采集对象的每个计算节点上运行一个第一采集容器,所述第一采集容器用于采集同一所述计算节点中所有容器组产生的所述应用日志;第二采集模块,用于采用边车模式采集所述第二容器组集合中多个所述容器组产生的所述应用日志,其中,所述边车模式用于在所述待采集对象的每个所述容器组中运行一个第二采集容器,所述第二采集容器用于采集所述容器组产生所述应用日志。
10、根据本发明实施例的另一方面,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述日志采集方法。
11、根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现所述日志采集方法的步骤。
12、在本发明实施例中,按照预设时间间隔,轮询监测待采集对象中每个容器组产生应用日志的第一日志产生速率,得到待采集对象产生应用日志的第二日志产生速率,其中,待采集对象包括多个容器组;在第二日志产生速率超过预设速率阈值的情况下,将待采集对象中的多个容器组划分为第一容器组集合和第二容器组集合,其中,第一容器组集合中的多个容器组产生应用日志的总速率为第三日志产生速率,第三日志产生速率不超过预设速率阈值;采用管理模式采集第一容器组集合中的多个容器组产生的应用日志,其中,管理模式用于在待采集对象的每个计算节点上运行一个第一采集容器,第一采集容器用于采集同一计算节点中所有容器组产生的应用日志;采用边车模式采集第二容器组集合中多个容器组产生的应用日志,其中,边车模式用于在待采集对象的每个容器组中运行一个第二采集容器,第二采集容器用于采集容器组产生应用日志,从而根据待采集对象的产生应用日志的日志产生速率,可以灵活地进行管理模式和边车模式的灵活组合,实现了在不浪费采集资源的情况下,确保日志采集的效率和准确性的技术效果,进而解决了日志采集效率低技术问题。
本文地址:https://www.jishuxx.com/zhuanli/20250110/353937.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表