1. 收集那些日志
- k8s系統的組件日志
- k8s cluster里面部署的應用程序日志
- 標准輸出
- 日志文件
2. elk stack日志收集方案
- 架構圖
ELK 是三個開源軟件的縮寫,提供一套完整的企業級日志平台解決方案。
分別是:
- Elasticsearch:搜索、分析和存儲數據
- Logstash :采集日志、格式化、過濾,最后將數據推送到Elasticsearch存儲
- Kibana:數據可視化
- redis:可以作為數據緩存做准備
- Beats :集合了多種單一用途數據采集器,用於實現從邊緣機器向Logstash 和Elasticsearch 發送數據。里面應用最多的是Filebeat,是一個輕量級日志采集器。
3. 容器中的日志怎么收集的
-
方案一:Node上部署一個日志收集程序
- DaemonSet方式部署日志收集程序
- 對本節點/var/log/kubelet/pods和/var/lib/docker/containers/兩個目錄下的日志進行采集
- Pod中容器日志目錄掛載到宿主機統一目錄上
-
方案二:Pod中附加專用日志收集的容器
- 每個運行應用程序的Pod中增加一個日志收集容器,使用emtyDir共享日志目錄讓日志收集程序讀取到。
- 每個運行應用程序的Pod中增加一個日志收集容器,使用emtyDir共享日志目錄讓日志收集程序讀取到。
-
方案三:應用程序直接推送日志
- 超出Kubernetes范圍
- 超出Kubernetes范圍
4. 日志收集三種的優缺點
方式 | 優點 | 缺點 |
---|---|---|
方案一:Node上部署一個日志收集程序 | 每個Node僅需部署一個日志收集程序,資源消耗少,對應用無侵入 | 應用程序日志如果寫到標准輸出和標准錯誤輸出,那就不支持多行日志 |
方案二:Pod中附加專用日志收集的容器 | 低耦合 | 每個Pod啟動一個日志收集代理,增加資源消耗,並增加運維維護成本 |
方案三:應用程序直接推送日志 | 無需額外收集工具 | 浸入應用,增加應用復雜度 |