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/
文章轉載:?分布式實驗室
(版權歸原作者所有,侵刪)