當前位置:
首頁 > 科技 > 5種Docker日誌最佳實踐

5種Docker日誌最佳實踐

關鍵時刻,第一時間送達!

作者丨Jeffrey Walker

翻譯丨Vincent

譯者註:微服務和容器很好地結合了,但是它們的結合讓日誌記錄也變成了一個難題。作者在本文描述了一些因素,在設置監控的時候是需要考慮的。以下為譯文

在過去的幾年中,容器已經成為IT領域的一個重要話題,尤其是在DevOps領域。簡單地說,當從一個環境遷移到另一個環境時,容器提供了一種簡單且可擴展的方法可以運行軟體。

容器是通過在一個包中提供完整的運行環境實現的,其中就包括了應用程序,所有的依賴項,庫,其它二進位文件以及運行時所需的配置文件。

與容器緊密結合的是微服務,它代表了開發應用程序的一種更靈活的方式。微服務體系結構將應用程序構建為一組松耦合的服務,這些服務通過處理離散業務功能的API連接起來。微服務主要為應用程序開發提供了一種「分而治之」的方法,而不是一個大型的單一代碼庫。

Docker在容器的基礎架構領域是處於世界領先地位的,它是一個部署容器級軟體應用的平台。容器的真正價值在於它們允許團隊動態地啟動一個完整的運行環境。Docker可以說是讓企業採用微服務的最具影響力的平台。

類似於虛擬機通過向來自一個伺服器的終端用戶提供一個操作系統的多個實例來簡化軟體開發和測試,容器在應用程序和主機操作系統之間添加了一個額外的抽象層。最大的不同是,容器不需要管理程序,只運行操作系統的一個實例;總的來說,這等同於內存更少,運行時間更快。

與開發任何應用程序一樣,日誌記錄是過程的中心部分,在出現問題時尤其有用。但是,在集裝箱化應用程序的世界裡,與傳統應用程序相比,它是不同的。日誌Docker實際上意味著不僅記錄應用程序和應用程序主機操作系統,以及Docker服務。在處理多碼應用程序時,有許多日誌記錄技術和方法可以記住。我們將在下面詳細介紹前五種最佳實踐。

基於應用程序的日誌記錄

在基於應用程序的方法中,容器內的應用程序使用日誌框架來處理日誌記錄過程。例如,某個Java應用程序可能會使用Log4j 2來對日誌文件格式化,然後發送到遠程伺服器,並完全繞過Docker環境和操作系統。

雖然基於應用程序的日誌記錄使開發人員對日誌事件有了最大的控制權,但是這種方法也會在應用程序過程中產生大量的消耗。這種方法對於那些工作在傳統應用程序環境中的人來說可能是有用的,因為它允許開發人員繼續使用應用程序的日誌框架(例如Log4j 2)而不需要向主機添加日誌功能。

Logging Docker實際上意味著不僅需要記錄應用程序和主機操作系統,還包括了Docker服務。

使用數據卷

容器本質上是臨時的,這意味著如果容器關閉了,那麼容器內的任何文件最終都會丟失。相反,容器必須將日誌事件轉發到集中式日誌記錄服務(比如Loggly),或者將日誌事件存儲在數據卷中。數據卷的定義為「容器內的一個標記目錄,該目錄用來保存持久或共享的數據」。

使用數據捲來記錄事件的好處是,由於它們鏈接到主機上的一個目錄,所以日誌數據仍然存在,並且可以與其它容器共享。這種方法的優點是它減少了在容器失敗或關閉時丟失數據的可能性。在這裡可以找到關於在Ubuntu中設置Docker數據卷的說明。

Docker日誌驅動

在Docker中進行日誌記錄的第三種方法是使用平台的日誌驅動程序將日誌事件轉發給在主機上運行的syslog實例。Docker日誌驅動程序直接從容器的stdout和stderr輸出裡面讀取日誌事件;這就消除了從日誌文件中讀取和寫入的需要,最終也會稍微改善性能。

然而,使用Docker日誌驅動程序也有一些缺點:

它不允許進行日誌解析,只允許進行日誌轉發。

Docker日誌命令只與日誌驅動程序JSON文件一起工作。

當TCP伺服器不可訪問時,容器就會終止。

這裡可以找到為Docker配置默認日誌驅動程序的說明。

容器專用日誌

這種方法的主要優點是允許在Docker環境中完全地管理日誌事件。由於專用的日誌容器可以從其他容器收集日誌事件,聚合它們,然後將事件存儲或轉發到第三方服務,這種方法消除了對主機的依賴。

專用日誌容器的其它優點是:

自動收集、監視和分析日誌事件。

在沒有配置的情況下自動縮放日誌事件。

通過多個日誌事件、stats和Docker API數據流來檢索日誌。

Sidecar方法

Sidecars已經成為管理微服務架構的流行方法。Sidecar的想法來自於類似摩托車的sidecar是如何附著在摩托車上的。引用一個消息源,「Sidecar作為第二個過程在你的服務旁邊運行,並通過類似於HTTP上的REST-like API 這樣一個同類介面提供了』平台基礎設施』的特性。」

從日誌記錄的角度來看,Sidecar方法的優點是每個容器都與它自己的日誌容器有關(應用程序容器保存日誌事件和日誌容器標記,然後像Loggly那樣將它們轉發到日誌管理系統)。

Sidecar方法對於大型部署來說尤其有用,因為這些部署需要有更專門的日誌信息和自定義標記。不過,建立Sidecar非常複雜,而且難度也很大。


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

北京一工程師離職後刪僱主網站源代碼被判刑五年,究竟是誰的錯?
Docker、Kubernetes和Mesos:为什么你知道的可能都是错的?
2017 已過大半,《王者榮耀》、《狼人殺》火熱背後的實時互聯網的隱形風口
不是生活所迫,是萬萬不會在北京寫代碼的
Docker、Kubernetes和Mesos:為什麼你知道的可能都是錯的?

TAG:CSDN |

您可能感興趣

iHealth基於Docker的DevOps CI/CD實踐
岌岌可危:22000多個容器編排系統暴露在網上,如 Kubernetes、Docker Swarm……
在 Scale Up 中使用 Health Check-每天5分鐘玩轉 Docker 容器技術
Docker教程:Docker Compose入門
Scrapy對接Docker
docker-compose ,docker-stack
通過 Docker 實現在 Linux 容器中運行 Microsoft SQL Server 資料庫
通過 Laradock學Docker——配置篇
Docker 小記—Compose&Swarm
Docker—Kubernetes已成為雲計算的主流
Docker全面推出支持Windows Server 2008及可遷移版本
Docker 創始人 Solomon Hykes 宣布從 Docker 離職
Dockly:從終端管理 Docker 容器
神話還是現實?Docker 和 Kubernetes 的完美架構
這20個Docker Command,有幾個是你會的?
Docker 架構
Docker編程 Hello World
MacOS Install Docker
Docker 安裝 Apache
微軟發布 Visual Studio Kubernetes、Docker EE 升級、AKS 已達到 GA 階段