使用Loggly 進行 Docker的日志集中化處理
Docker越來越多的被應用到分布式應用中。由于Docker 容器可以隔離依賴并簡化應用維護,因此成千上萬的企業(yè)正在使用Docker來縮短他們的發(fā)布周期并實現(xiàn)持續(xù)交付。Loggly 對Docker及時的提供新的支持的原因正在于現(xiàn)今它已經(jīng)有很多值得興奮的地方。
在這篇文章中,我將介紹幾種Docker的日志處理的方法,并給出如何從類似Nginx這樣的應用程序發(fā)送syslog的示例。
Loggly 為Docker Logging添色
Docker 提供一個內(nèi)置的logging功能,但是它僅僅只是給你一個初步的文本格式的最近訪問日志。使用Loggly管理Docker日志有如下優(yōu)勢:
你可以在一個地方獲取到所有容器的日志,而無需再運行docker logs命令;
你可以通過我們提供的Search工具Loggly Dynamic Field Explorer,更快捷、高效的分析你的Docker日志并且它還提供一個直觀的趨勢圖;
你可以設置一些報警,這樣可以在發(fā)生錯誤或者事件數(shù)達到一個特定的閾值時(可能意味著故障)及時知曉。
Docker日志發(fā)送到Loggly可以有多種途徑
Loggly提供了多種靈活的日志傳送方法,你可以選擇其中最適合你特定環(huán)境的那個——當然,所有的方法都不需要專門的agent。以下是為每種logging類型提供的***方案:
1. Syslog
現(xiàn)在您可以使用 Loggly Docker container。它同樣托管在 Docker Hub上。SendGrid Labs推薦使用這種方案。
2. 自定義應用日志
通過Loggly的 HTTP端點發(fā)送數(shù)據(jù):如果你正在使用Loggly為通用開發(fā)語言提供的 logging庫的其中之一做logging的話,這種方式可能會工作的很好。
3. 文件和socket結(jié)合
掛載到宿主機,之后rsyslog將會幫你讀取已經(jīng)掛載的卷,并且隔一段時間會將你的log events轉(zhuǎn)發(fā)到Loggly。下次我會找個時間針對這種方法作出更為詳細的介紹。
在這篇文章中,我將會詳細介紹***種方案,這種方案適用于可以生成兼容于syslog日志的應用程序。兼容于syslog日志的應用包括Apache、Nginx和使用logback或是Log4j的Java程序。
使用容器技術(shù)有以下優(yōu)點:
- 你只需要維護單獨的進程(一個容器就是一個進程),并且它們相對獨立于宿主機本身;
- 你可以更高效的使用你的資源。在一臺宿主機上,一個Loggly的Docker容器可以支持同一主機上的數(shù)十個其它容器;
- 你可以保證你的核心應用的性能和可靠性。
- 由于Loggly容器是作為一個單獨的進程運行,你可以確保以一種可靠的方式從Loggly獲取你的日志,而無需阻塞你的應用程序的處理;
- 你可以單點控制發(fā)送到Loggly的日志。例如,由于日志會發(fā)送到外網(wǎng),你可能希望對其設置TLS加密,又或者,你想對你的日志做下過濾,只是想把特定日志級別的日志內(nèi)容發(fā)送到Loggly。
Loggly Docker容器是怎樣工作的?
SendGrid提供了Docker 鏡像。 使用鏡像可以快速構(gòu)建一個Docker容器。而在容器中,rsyslog會開放514端口,Docker會將這個端口映射到宿主機上的一個高數(shù)值的端口。 而當你設置連接到其他的容器時,Docker將會插入一個環(huán)境變量來告知它如何發(fā)送syslog到Loggly容器。連接到它的Docker容器數(shù)量理論 上沒有限制。這樣多對一的關(guān)系多對一的關(guān)系見上圖。
如何使用它?
Loggly 的支持中心目前提供了如何使用Docker容器的 step-by-step instructions教程?;镜拿罹褪沁\行Logger docker容器,然后插入自定義的標記(token), 并將端口映射到接收syslog的514端口。
- sudo docker run -d -p 514/udp --name loggly-docker -e TOKEN=TOKEN -e TAG=Docker sendgridlabs/loggly-docker
該篇教程也包含了一個具體的示例,講述如何使用netcat發(fā)送測試數(shù)據(jù),并且配置一個支持syslog的Nginx容器然后發(fā)送syslog數(shù)據(jù)到Loggly的過程。一旦數(shù)據(jù)流入到Loggly,你便可以使用我們的查找接口、趨勢圖等等。
那么,現(xiàn)在就嘗試構(gòu)建Docker Logging吧!