摘要:本文就探討一下,平臺(tái)內(nèi)如何做容器日志收集。當(dāng)然完整的日志體系中,并不僅僅是采集,還需要有日志存儲(chǔ)和展現(xiàn)。是可以理解微的助手,它可以識(shí)別容器內(nèi)的日志卷文件,通知進(jìn)行采集。
引言
一個(gè)完整的容器平臺(tái),容器日志都是很重要的一環(huán)。尤其在微服務(wù)架構(gòu)大行其道狀況下,程序的訪問(wèn)監(jiān)控健康狀態(tài)很多都依賴日志信息的收集,由于Docker的存在,讓容器平臺(tái)中的日志收集和傳統(tǒng)方式很多不一樣,日志的輸出和采集點(diǎn)收集和以前大有不同。本文就探討一下,Rancher平臺(tái)內(nèi)如何做容器日志收集。
當(dāng)前現(xiàn)狀縱覽當(dāng)前容器日志收集的場(chǎng)景,無(wú)非就是兩種方式:一是直接采集Docker標(biāo)準(zhǔn)輸出,容器內(nèi)的服務(wù)將日志信息寫到標(biāo)準(zhǔn)輸出,這樣通過(guò)Docker的log driver可以發(fā)送到相應(yīng)的收集程序中;二是延續(xù)傳統(tǒng)的日志寫入方式,容器內(nèi)的服務(wù)將日志直接寫到普通文件中,通過(guò)Docker volume將日志文件映射到Host上,日志采集程序就可以收集它。
第一種方式足夠簡(jiǎn)單,直接配置相關(guān)的Log Driver就可以,但是這種方式也有些劣勢(shì):
當(dāng)主機(jī)的容器密度比較高的時(shí)候,對(duì)Docker Engine的壓力比較大,畢竟容器標(biāo)準(zhǔn)輸出都要通過(guò)Docker Engine來(lái)處理。
盡管原則上,我們希望遵循一容器部署一個(gè)服務(wù)的原則,但是有時(shí)候特殊情況不可避免容器內(nèi)有多個(gè)業(yè)務(wù)服務(wù),這時(shí)候很難做到所有服務(wù)都向標(biāo)準(zhǔn)輸出寫日志,這就需要用到前面所說(shuō)的第二種場(chǎng)景模式。
雖然我們可以先選擇很多種Log Driver,但是有些Log Driver會(huì)破壞Docker原生的體驗(yàn),比如docker logs無(wú)法直接看到容器日志。
基于以上考慮,一個(gè)完整的日志方案必須要同時(shí)滿足標(biāo)準(zhǔn)輸出和日志卷兩種模式才可以。當(dāng)然完整的日志體系中,并不僅僅是采集,還需要有日志存儲(chǔ)和UI展現(xiàn)。日志存儲(chǔ)有很多種開(kāi)源的實(shí)現(xiàn),這個(gè)一般用戶都會(huì)有自己鐘情的選擇,而UI展現(xiàn)更是各家有各家的需求,很難形成比較好的標(biāo)準(zhǔn),一般都是通過(guò)定制化方式解決。所以此文主要展現(xiàn)的方案是日志采集方案,當(dāng)然在存儲(chǔ)和UI展現(xiàn)上會(huì)對(duì)接開(kāi)源實(shí)現(xiàn),沒(méi)有特殊需求的情況下,也可以擁有一個(gè)完整的體驗(yàn)。
Rancher下的解決方案如上面圖中所示,日志存儲(chǔ)和UI展現(xiàn)可以直接使用ElasticSearch & Kibana,日志采集方面如之前所分析,需要對(duì)接兩種采集模式,所以這部分采用Fluentd & Logging Helper的組合,F(xiàn)luentd是很通用的日志采集程序,擁有優(yōu)異的性能,相對(duì)Logstash來(lái)說(shuō)同等壓力下,其內(nèi)存消耗要少很多。Logging Helper是可以理解微Fluentd的助手,它可以識(shí)別容器內(nèi)的日志卷文件,通知Fluentd進(jìn)行采集。此外,由于要保證Dokcer和Rancher體驗(yàn)的完整性,在Docker Log Driver的選型上支持json-file和journald,其原因:一是json-file和journald相對(duì)來(lái)說(shuō)比較常用;二是這兩種驅(qū)動(dòng)下,docker logs依然可以有內(nèi)容輸出,保證了體驗(yàn)的完整性。
下面開(kāi)始說(shuō)明,整個(gè)方案的部署過(guò)程。先用一張圖來(lái)描述整體的部署結(jié)構(gòu),如下:
總共劃分三個(gè)ENV,其中一個(gè)ENV部署ES & Kibana,另外兩個(gè)ENV分別添加json-file驅(qū)動(dòng)的主機(jī)和journald驅(qū)動(dòng)的主機(jī)。詳細(xì)部署過(guò)程如下:
創(chuàng)建三個(gè)ENV,使用Cattle引擎。設(shè)置Logging Catalog方便部署,在Admin–Settings頁(yè)面中添加Catalog,地址為:https://github.com/niusmallna...
進(jìn)入ES-Kibana ENV中,部署ElasticSearch & Kibana,這兩個(gè)應(yīng)用在Community Catalog中均可以找到,部署非常簡(jiǎn)單,需要注意的是,建議選擇Elasticsearch 2.x,Kibana中的Elasicsearch Source選擇elasticseach-clients:
分配兩臺(tái)主機(jī)并安裝Docker,其中Log Driver分別選擇json-file和journald,并將主機(jī)添加到各自的ENV中。 在這兩個(gè)ENV中添加External Link指向之前部署的Elasticsearch地址:
然后在Jsonfile & Journald ENV中添加Rancher Logging應(yīng)用,打開(kāi)對(duì)應(yīng)的catalog,ES link指向剛才設(shè)定的External link, 其中Volume Pattern是日志卷的匹配模式,F(xiàn)ile Pattern是日志卷內(nèi)的日志文件匹配模式:
以上部署完成之后,部署一些應(yīng)用并產(chǎn)生一些訪問(wèn)日志,就可以在Kibana的界面中看到:
若要使用日志卷方式,則需要在service啟動(dòng)的時(shí)候配置volume,volume name需要匹配之前設(shè)定的Volume Pattern:
秉承一切開(kāi)源的原則,相關(guān)實(shí)現(xiàn)可以查看一下鏈接:
https://github.com/niusmallna...
https://github.com/niusmallna...
https://github.com/niusmallna...
總結(jié)通過(guò)Fluentd我們可以對(duì)接很多第三方日志存儲(chǔ)體系,但是Fluentd自身并不能完成日志采集的所有場(chǎng)景,所以非常需要Logging Helper的幫助。通過(guò)Logging Helper可以定制出一些額外采集規(guī)則,比如可以過(guò)濾某些容器日志等等。當(dāng)然真正大規(guī)模生產(chǎn)環(huán)境日志平臺(tái),其實(shí)是對(duì)整個(gè)運(yùn)維體系的考驗(yàn), 單純靠開(kāi)源程序的組合并不能真正解決問(wèn)題。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26859.html
摘要:因此,另一種解決辦法像這樣的工具,則只是將和進(jìn)行了結(jié)合,其功能尤其關(guān)注日志管理,比如格式檢查,日志語(yǔ)法分析,數(shù)據(jù)改進(jìn)地址地理位置信息,元數(shù)據(jù)標(biāo)簽等以及日志路由。 由Rancher社區(qū)維護(hù)的應(yīng)用商店最近迎來(lái)了兩個(gè)明星項(xiàng)目——SPM 和 Logsene,來(lái)自Sematext的監(jiān)控與日志工具。如果你已經(jīng)熟悉Logstash,Kibana,Prometheus,Grafana這些監(jiān)控或日志解決...
摘要:來(lái)自用戶的最佳實(shí)踐分享,如何用阿里開(kāi)源的日志收集工具收集機(jī)器上所有應(yīng)用日志。具有如下特性一個(gè)單獨(dú)的進(jìn)程收集機(jī)器上所有容器的日志。無(wú)論是強(qiáng)大的阿里云日志服務(wù),還是比較流行的組合,甚至是,都能把日志投遞到正確的地點(diǎn)。 來(lái)自用戶的最佳實(shí)踐分享,如何用阿里開(kāi)源的Docker日志收集工具fluentd-pilot收集機(jī)器上所有Docker應(yīng)用日志。 fluentd-pilot簡(jiǎn)介 fluentd...
摘要:容器化應(yīng)用日志收集挑戰(zhàn)應(yīng)用日志的收集分析和監(jiān)控是日常運(yùn)維工作重要的部分,妥善地處理應(yīng)用日志收集往往是應(yīng)用容器化重要的一個(gè)課題。日志來(lái)源識(shí)別采用統(tǒng)一應(yīng)用日志收集方案,日志分散在很多不同容器的相互隔離的環(huán)境中,需要解決日志的來(lái)源識(shí)別問(wèn)題。 容器化應(yīng)用日志收集挑戰(zhàn) 應(yīng)用日志的收集、分析和監(jiān)控是日常運(yùn)維工作重要的部分,妥善地處理應(yīng)用日志收集往往是應(yīng)用容器化重要的一個(gè)課題。 Docker處理日志...
摘要:新近發(fā)布,中國(guó)區(qū)團(tuán)隊(duì)特為中國(guó)用戶準(zhǔn)備了千元大獎(jiǎng),邀您參與用戶體驗(yàn)計(jì)劃找,提團(tuán)隊(duì)珍視用戶的每一個(gè)意見(jiàn)與反饋。新版本發(fā)布后還將經(jīng)歷版本完善與優(yōu)化的階段。 showImg(https://segmentfault.com/img/remote/1460000016731917?w=1600&h=900); GitLab支持、CICD優(yōu)化、項(xiàng)目配額管理、驅(qū)散容器功能等等,Rancher 2.1...
閱讀 1579·2021-10-11 10:59
閱讀 2019·2021-09-09 11:36
閱讀 1534·2019-08-30 15:55
閱讀 1388·2019-08-29 11:20
閱讀 3125·2019-08-26 13:39
閱讀 1537·2019-08-26 13:37
閱讀 2048·2019-08-26 12:11
閱讀 1386·2019-08-23 14:28