最佳實踐系列丨Docker EE 日誌記錄最佳實踐(一)

本文首發自「Docker公司」公衆號(ID:docker-cn)
編譯丨小東
每週1、3、五 與您不見不散!docker

在傳統上,設計和實現集中的日誌記錄老是成爲馬後炮。要等到各類問題出現,集中的日誌記錄成爲優先事項,人們纔會想到用這樣的解決方案查詢、查看和分析日誌,以找到問題的根本緣由。可是到了容器時代,在設計使用 Docker 企業版 (Docker EE) 的容器即服務 (CaaS) 平臺時,優先解決集中式日誌記錄是相當重要的。隨着在容器中部署的微服務數量不斷增多,它們以日誌(或事件)形式產生的數據量會發生指數增加。json

您將學到的知識

此參考架構提供了關於 Docker 日誌記錄功能如何工做的概述,說明了 Docker 日誌的兩大類別,而後討論了 Docker 日誌記錄最佳實踐。架構

瞭解 Docker 日誌記錄

在研究設計要素以前,先了解 Docker 日誌記錄的基本知識很重要。運維

Docker 支持不一樣的日誌記錄驅動,用於存儲和/或流式傳輸主容器進程 (pid 1) 的容器 stdout 和 stderr 日誌。默認狀況下,Docker 使用 json-file 日誌記錄驅動,但也能夠配置它使用許多其餘驅動,方法是在 /etc/docker/daemon.json 中設置 log-driver 的值,而後重啓 Docker 守護進程以從新加載其配置。微服務

日誌記錄驅動設置會應用於從新配置守護進程以後啓動的全部容器(在從新配置日誌記錄驅動以後重啓現有容器並不會致使容器使用更新過的配置)。要覆蓋默認的容器日誌記錄驅動,應使用 --log-driver 和 --log-opt 選項運行容器。另外一方面,可使用 docker service update --log-driver--log-opt 對 swarm mode 服務進行運行中更新,使其改用不一樣的日誌記錄驅動。性能

那麼 Docker 引擎日誌呢?這些日誌一般由默認的系統管理節點日誌記錄器處理。現代的大多數發行版(CentOS 七、RHEL 七、Ubuntu 16 等)都使用 systemd,後者使用 journald 記錄日誌,使用 journalctl 訪問日誌。要訪問引擎日誌,可以使用 journalctl -u docker.service。spa

Docker 日誌類別和源

說過 Docker 日誌記錄的基礎知識以後,本節將說明它們的類別和源。設計

Docker 日誌一般可分爲兩種類別:基礎架構管理日誌或應用日誌。大多很多天志根據需訪問日誌者的角色天然地納入這兩種類別。日誌

  • 運維人員最關心平臺的穩定性以及服務的可用性。
  • 開發人員比較關心其應用代碼以及服務的性能。

爲了實現自助服務平臺,運維人員和開發人員都應該有權訪問他們爲了履行職責而須要訪問的日誌。開發運維的實踐代表,在服務可用性和性能方面,你們要共同承擔整體責任。可是,不該該讓每個人都有權訪問平臺上的每一個日誌。例如,開發人員應該只須要訪問關於其服務和集成點的日誌。運維人員則更關心 Docker 守護進程日誌、UCP 和 DTR 可用性,以及服務可用性。二者的訪問範圍有一些重疊,由於開發人員和運維人員都應該瞭解服務可用性。讓每一個角色都能訪問須要的日誌,能夠在發生問題時簡化故障排除,並縮短解決故障平均時間 (MTTR)。進程

相關文章
相關標籤/搜索