docker日志收集方案有太多,下面截圖羅列docker官方給的日志收集方案(詳細(xì)請轉(zhuǎn)docker官方文檔)。很多方案都不適合我們下面的系列文章沒有說。
經(jīng)過以下5篇博客的敘述簡單說下docker容器日志采集方案
docker日志收集方案基本歸為兩類:
1、本地存儲
2、遠(yuǎn)程輸出
由于docker的特殊性大部分采用的都是遠(yuǎn)程即時輸出方案,比如阿里云,亞馬遜云,都有自己的插件
各有優(yōu)劣勢,不過總體趨勢肯定是遠(yuǎn)程即時傳輸方式,如果網(wǎng)絡(luò)有壓力,進(jìn)行日志壓縮傳輸。
本地存儲然后在掃描傳輸實際上是把積壓問題放在了虛擬機(jī)上面。這種方案是基于虛擬機(jī)時代虛擬化技術(shù)的方案
如果在容器內(nèi)部放置日志掃描程序,首先會導(dǎo)致容器運(yùn)行兩個進(jìn)程,這是docker官方不推薦的(https://docs.docker-cn.com/engine/admin/multi-service_container/),
會造成不必要的麻煩引起問題不便追查(黑盒),增加了使用難度。
其實我們還可以通過容器卷來吧日志輸出到指定目錄但是使用集群之后,
容器卷是建立在操作系統(tǒng)文件系統(tǒng)之上的,就需要針對卷做可移植操作,
同樣是使用成本增加,因為如果使用的是docker集群要保證每臺宿主機(jī)能訪問相同的卷,
我們要做集中存儲(集中存儲我們數(shù)據(jù)庫才有這個待遇?。。?!)
對于docker容器虛擬化技術(shù)有幾個特點(diǎn)
1、容器在集群宿主之間會漂移,每漂移一次容器ID會變更,所以跟著容器相關(guān)都會換掉,當(dāng)然給容器起的名字不會換掉,不過那只是在集群中標(biāo)記(更直白的說這個名字是存儲在第三方鍵值對進(jìn)行對應(yīng)的是docker引擎維護(hù)的)。
2、容器是黑盒封閉性的,把日志先輸出到容器內(nèi)部不符合新一代容器技術(shù)的理念,處理不好會造成大量垃圾文件。