Kubernetes日志收集的那些套路
- 默认方式下容器日志并不会限制日志文件的大小,容器会一直写日志,导致磁盘爆满,影响系统应用。(docker log-driver支持log文件的rotate)
- Docker Daemon收集容器的标准输出,当日志量过大时会导致Docker Daemon成为日志收集的瓶颈,日志的收集速度受限。
- 日志文件量过大时,利用docker logs -f查看时会直接将Docker Daemon阻塞住,造成docker ps等命令也不响应。
log-driver 日志收集速度
syslog 14.9 MB/s
json-file 37.9 MB/s
- 所有应用容器都是基于S6基底镜像的,容器应用日志都会重定向到宿主机的某个目录文件下比如/data/logs/namespace/appname/podname/log/xxxx.log
- log-agent内部包含Filebeat,Logrotate等工具,其中Filebeat是作为日志文件收集的agent
- 通过Filebeat将收集的日志发送到Kafka
- Kafka在讲日志发送的ES日志存储/kibana检索层
- Logstash作为中间工具主要用来在ES中创建index和消费Kafka的消息
- 用户部署的新应用,如何动态更新Filebeat配置
- 如何保证每个日志文件都被正常的rotate
- 如果需要更多的功能则需要二次开发Filebeat,使Filebeat支持更多的自定义配置
- https://docs.docker.com/v17.09/engine/admin/logging/overview/
- http://skarnet.org/software/s6/
文章转载: 分布式实验室
(版权归原作者所有,侵删)