Docker容器的日志集中化處理

jopen 10年前發布 | 81K 次閱讀 Docker

【編者的話】loggly是一個企業級的商業管理工具,它基于云端的日志處理服務,可以將機器生成日志文檔、并整理為可進行搜索的格式。 本文介紹了如何使用loggly管理Docker日志。

Docker越來越多的被應用到分布式應用中。由于Docker 容器可以隔離依賴并簡化應用維護,因此成千上萬的企業正在使用Docker來縮短他們的發布周期并實現持續交付。Loggly 對Docker及時的提供新的支持的原因正在于現今它已經有很多值得興奮的地方:

使用 #Docker#AWS ? 你應該為發現這樣的一個“重新發明”而感到驚喜!
—— Jeff Barr(@jeffbarr) November 4,2014
在這篇文章中,我將介紹幾種Docker的日志處理的方法,并給出如何從類似Nginx這樣的應用程序發送syslog的示例。

 Docker容器的日志集中化處理

Loggly 為Docker Logging添色

Docker 提供一個內置的logging功能,但是它僅僅只是給你一個初步的文本格式的最近訪問日志。使用Loggly管理Docker日志有如下優勢:

  • 你可以在一個地方獲取到所有容器的日志,而無需再運行docker logs命令;
  • 你可以通過我們提供的Search工具Loggly Dynamic Field Explorer,更快捷、高效的分析你的Docker日志并且它還提供一個直觀的趨勢圖;
  • 你可以設置一些報警,這樣可以在發生錯誤或者事件數達到一個特定的閾值時(可能意味著故障)及時知曉。
  • </ul>

    Docker日志發送到Loggly可以有多種途徑

    我們為您提供了多種靈活的日志傳送方法,你可以選擇其中最適合你特定環境的那個——當然,所有的方法都不需要專門的agent。以下是為每種logging類型提供的最佳方案:

    1. Syslog
      現在您可以使用 Loggly Docker container。它同樣托管在 Docker Hub上。SendGrid Labs推薦使用這種方案。

    2. 自定義應用日志
      通過我們的 HTTP端點發送數據:如果你正在使用我們為通用開發語言提供的 logging庫的其中之一做logging的話,這種方式可能會工作的很好。

    3. 文件和socket結合
      掛載到宿主機,之后rsyslog將會幫你讀取已經掛載的卷,并且隔一段時間會將你的log events轉發到Loggly。下次我會找個時間針對這種方法作出更為詳細的介紹。

      在這篇文章中,我將會詳細介紹第一種方案,這種方案適用于可以生成兼容于syslog日志的應用程序。兼容于syslog日志的應用包括Apache、Nginx和使用logback或是Log4j的Java程序。

      使用容器技術有以下優點:
      • 你只需要維護單獨的進程(一個容器就是一個進程),并且它們相對獨立于宿主機本身;
      • 你可以更高效的使用你的資源。在一臺宿主機上,一個Loggly的Docker容器可以支持同一主機上的數十個其它容器;
      • 你可以保證你的核心應用的性能和可靠性。
      • 由于Loggly容器是作為一個單獨的進程運行,你可以確保以一種可靠的方式從Loggly獲取你的日志,而無需阻塞你的應用程序的處理;
      • 你可以單點控制發送到Loggly的日志。例如,由于日志會發送到外網,你可能希望對其設置TLS加密,又或者,你想對你的日志做下過濾,只是想把特定日志級別的日志內容發送到Loggly。

      Loggly Docker容器是怎樣工作的?

      SendGrid提供了Docker 鏡像。 使用鏡像可以快速構建一個Docker容器。而在容器中,rsyslog會開放514端口,Docker會將這個端口映射到宿主機上的一個高數值的端口。 而當你設置連接到其他的容器時,Docker將會插入一個環境變量來告知它如何發送syslog到Loggly容器。連接到它的Docker容器數量理論 上沒有限制。這樣多對一的關系多對一的關系見上圖。

      如何使用它?

      我們的支持中心目前提供了如何使用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發送測試數據,并且配置一個支持syslog的Nginx容器然后發送syslog數據到Loggly的過程。一旦數據流入到Loggly,你便可以使用我們的查找接口、趨勢圖等等。
       Docker容器的日志集中化處理

      那么,現在就嘗試構建Docker Logging吧!

      發送你的Docker日志到Loggly將使得你的運維團隊更輕松而你的開發人員也可以在診斷故障根源時更有成效。因此,到 GitHub 上獲取Loggly Docker容器吧;或者如果你還沒有Loggly的話,趕緊來免費注冊吧!(PS:官方的廣告~~)

      本文翻譯自 https://www.loggly.com/blog/ce ... ners/

      來自:http://dockerone.com/article/46
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!