1. 程式人生 > >Docker容器內應用的日誌收集方案

Docker容器內應用的日誌收集方案

日誌對開發和維護的重要性不言而喻。分散式應用中的日誌分佈在多臺機器上,所以我們需要將日誌採集到一個地方來集中管理。目前比較常見的日誌方案是ElK,主要包括三大元件:Elasticsearch, Logstash和Kibana。這裡主要說一下使用logstash收集Docker容器裡應用的日誌。

容器中應用的日誌,其生命週期和容器相同。主要要兩個去向:標準輸出stdout到主機/var/lib/docker/containers//***-json.log檔案中,***是應用在容器中的id;寫日誌到磁碟檔案。

主要有以下兩種收集方法:1.對於第一種寫在容器裡面的日誌,其路徑中的***是id,應用每次在容器裡跑起來其id是不同的,這樣不容易確定日誌的路徑。我們需要將應用的日誌輸出到固定目錄並通過 -V 命令掛載出來到主機磁碟(轉化成第二種日誌去向),這樣我們就可以通過Logstash採集宿主機固定目錄的日誌。2.另外一種方式我看阿里雲也在採用,執行一個日誌收集容器。藉助docker的Volume功能。在host機器上開闢一個固定目錄D;產生日誌的容器將日誌檔案所在目錄mount到D目錄下的子目錄中;收集日誌的容器再把目錄D mount到自己容器內。分享一下阿里雲案例連結:

https://yq.aliyun.com/articles/303