Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

准备

关于容器日志

Docker 的日志分为两类,一类是 Docker 引擎日志;另一类是容器日志。引擎日志一般都交给了系统日志,不同的操作系统会放在不同的位置。

  • 默认方式下容器日志并不会限制日志文件的大小,容器会一直写日志,导致磁盘爆满,影响系统应用。(docker log-driver 支持log文件的rotate)

  • Docker Daemon 收集容器的标准输出,当日志量过大时会导致 Docker Daemon 成为日志收集的瓶颈,日志的收集速度受限。

  • 日志文件量过大时,利用docker logs -f查看时会直接将 Docker Daemon 阻塞住,造成docker ps等命令也不响应。

关于k8s日志

k8s日志收集方案分成三个级别:

  1. 应用(Pod)级别

  2. 节点级别

  3. 集群级别

  • 应用(Pod)级别

  • 节点级别

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

  • 集群级别

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

日志架构

解释如下:

  1. 所有应用容器都是基于s6基底镜像的,容器应用日志都会重定向到宿主机的某个目录文件下比如/data/logs/namespace/appname/podname/log/xxxx.log

  2. log-agent 内部 包含 filebeat ,logrotate 等工具,其中filebeat是作为日志文件收集的agent

  3. 通过filebeat将收集的日志发送到kafka

  4. kafka在讲日志发送的es日志存储/kibana检索层

  5. logstash 作为中间工具主要用来在es中创建index和消费kafka 的消息

整个流程很好理解,但是需要解决的是

  1. 用户部署的新应用,如何动态更新filebeat配置,

  2. 如何保证每个日志文件都被正常的rotate,

  3. 如果需要更多的功能则需要二次开发filebeat,使filebeat 支持更多的自定义配置。

付诸实践

解决上述问题,就需要开发一个log-agent应用以daemonset形式运行在k8s集群的每个节点上,应用内部包含filebeat,logrotate,和需要开发的功能组件。

第一个问题,如何动态更新filebeat配置,可以利用http://github.com/fsnotify/fsnotify 工具包监听日志目录变化create、delete事件,利用模板渲染的方法更新filebeat配置文件

第二个问题,利用http://github.com/robfig/cron 工具包 创建cronJob,定期rotate日志文件,注意应用日志文件所属用户,如果不是root用户所属,可以在配置中设置切换用户


  

第三个问题,关于二次开发filebeat,可以参考博文 https://www.jianshu.com/p/fe3ac68f4

总结

本文只是对k8s日志收集提供了一个简单的思路,关于日志收集可以根据公司的需求,因地制宜。

参考文献

  1. https://kubernetes.io/docs/concepts/cluster-administration/logging/

  2. https://support.rackspace.com/how-to/understanding-logrotate-utility/

  3. https://github.com/elastic/beats/tree/master/filebeat

  4. http://skarnet.org/software/s6/

来源:https://zhuanlan.zhihu.com/p/70662744

推荐阅读:

华为大数据解决方案(PPT)

世界的真实格局分析,地球人类社会底层运行原理

企业IT技术架构规划方案

华为内网最火的文章:什么是内卷?

不是你需要中台,而是一名合格的架构师(附各大厂中台建设PPT)

黑石董事长:我今生所有的经验,总结起来,不过这54条!

阿里达摩院《机器学习算法学习指南》火了,限时开放下载!

小米用户画像实战,48页PPT下载

GO语言版《算法进阶指南》火了,完整版PDF下载!

Kubernetes 日志收集的原理,看这一篇就够了-LMLPHP

本文分享自微信公众号 - 肉眼品世界(find_world_fine)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

04-17 16:18