Docker logging drivers

百聯達發表於2018-04-08
一:前言

1.Docker擁有多種日誌機制來收集容器及其內部執行的服務的日誌資訊,這些機制統稱為logging drivers。  Docker daemon 擁有一個預設的logging driver(json-file),容器預設採用這個logging driver.

2.Docker處理日誌的方法是 Docker daemon捕捉每一個容器程式的STDOUT和STDERR, 通過logging driver將它們輸出儲存在磁碟上。 然後使用者就能使用docker logs 來進行查詢。

3.這些日誌跟隨容器而產生的,如果刪除了某個容器,相應的日誌檔案也會隨著被刪除。


4.容器日誌的輸出形式
  • stdout 標準輸出
  • stderr 標準錯誤
  • 以json格式存放在容器對於到日誌檔案中
5.docker日誌內容型別
  • docker自身執行時Daemon的日誌內容
  • docker容器的日誌內容
二:logging driver型別


三:容器日誌收集的方式

1.容器外收集。將宿主機的目錄掛載為容器的日誌目錄,然後在宿主機上收集。

2.容器內收集。在容器內執行一個後臺日誌收集服務。

3.單獨執行日誌容器。單獨執行一個容器提供共享日誌卷,在日誌容器中收集日誌。

4.網路收集。容器內應用將日誌直接傳送到日誌中心,比如java程式可以使用log4j 2轉換日誌格式併傳送到遠端。

5.通過修改docker的--log-driver。可以利用不同的driver把日誌輸出到不同地方,將log-driver設定為syslog、fluentd、splunk等日誌收集服務,然後傳送到遠端。

四:容器日誌收集的Sidecar模式

五:Kubernetes中的日誌收集架構



  通過在每臺node上部署?個以DaemonSet?式運?的fluentd來收集每臺node上的?志。Fluentd將docker?志?錄 /var/lib/docker/containers 和 /var/log ?錄掛載到Pod中,然後Pod會在node節點的 /var/log/pods ?錄中建立新的?錄,可以區別不同的容器?志輸出,該?錄下有?個?志?件連結到 /var/lib/docker/contianers ?錄下的容器?志輸出。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2152682/,如需轉載,請註明出處,否則將追究法律責任。

相關文章