(二)Docker 如何支持多種日志方案?
? 將[容器日志發送到 STDOUT 和 STDERR]是 Docker 的默認日志行為,實際上,Docker 提供了多種日志機制幫助用戶從運行的容器中提取日志資訊,這些機制被稱作 logging driver,
root@host1:~# docker info |grep 'Logging Driver'
WARNING: No swap limit support
Logging Driver: json-file
root@host1:~#
如果容器在啟動時沒有特別指明,就會使用這個默認的 logging driver,
json-file 會將容器的日志保存在 json 檔案中,Docker 負責格式化其內容并輸出到 STDOUT 和 STDERR,
我們可以在 Host 的容器目錄中找到這個檔案,路徑為 /var/lib/docker/containers/<contariner ID>/<contariner ID>-json.log
比如我們可以查看前面 httpd 容器 json 格式的日志檔案,
root@host1:/var/lib/docker/containers/fbf97b238f0c40cc397618ce19e4ed875b599fd26430382f9e73f3c275e9d7a1# pwd
/var/lib/docker/containers/fbf97b238f0c40cc397618ce19e4ed875b599fd26430382f9e73f3c275e9d7a1
root@host1:/var/lib/docker/containers/fbf97b238f0c40cc397618ce19e4ed875b599fd26430382f9e73f3c275e9dfbf97b238f0c40cc397618ce19e4ed875b599fd26430382f9e73f3c275e9d7a1-json.log
除了 json-file,Docker 還支持多種 logging driver,完整串列可訪問官方檔案 https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers

none 是 disable 容器日志功能,
syslog 和 journald 是 Linux 上的兩種日志管理服務,
awslogs、splunk 和 gcplogs 是第三方日志托管服務,
gelf 和 fluentd 是兩種開源的日志管理方案,我們會在后面分別討論,
容器啟動時可以通過 --log-driver 指定使用的 logging driver,如果要設定 Docker 默認的 logging driver,需要修改 Docker daemon 的啟動腳本,指定 --log-driver 引數,比如:
ExecStart=/usr/bin/dockerd -H fd:// --log-driver=syslog --log-opt ......
每種 logging driver 都有自己的 --log-opt,使用時請參考官方檔案,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245089.html
標籤:其他
