亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Filebeat自動收集Kubernetes日志的分析系統(tǒng)①

        2018-09-17 08:49:00翟雅榮于金剛
        關(guān)鍵詞:開源日志容器

        翟雅榮,于金剛

        1(中國科學(xué)院大學(xué),北京 100049)

        2(中國科學(xué)院 沈陽計算技術(shù)研究所,沈陽 110168)

        日志是記錄系統(tǒng)行為的一種方式,具有非常重要的作用.日志信息可作為系統(tǒng)排錯和性能優(yōu)化的依據(jù);通過日志,可以有效的監(jiān)控系統(tǒng)的運(yùn)行狀況,如性能信息、故障檢測、入侵檢測等;日志可以用于用戶的行為信息分析,發(fā)現(xiàn)潛在商機(jī);日志可以幫助開發(fā)人員找到bug的來源,修復(fù)漏洞.并且隨著數(shù)據(jù)挖掘、大數(shù)據(jù)等技術(shù)的不斷發(fā)展,數(shù)據(jù)也愈發(fā)凸顯重要,日志作為數(shù)據(jù)分析的一大來源,日志收集分析系統(tǒng)也愈發(fā)凸顯重要.但隨著互聯(lián)網(wǎng)、大數(shù)據(jù)等快速發(fā)展,系統(tǒng)應(yīng)用越來越復(fù)雜,規(guī)模越來越大,系統(tǒng)產(chǎn)生的日志急劇增加[1],給日志的收集、存儲和分析帶來很多挑戰(zhàn).

        傳統(tǒng)的日志存儲在本機(jī)磁盤上,查看日志時需要登陸到宿主機(jī)上,用grep等工具進(jìn)行查看分析,這種方式的效率極低,并且隨著機(jī)器數(shù)量的增多,排查問題所花費(fèi)的時間隨之增加,并且這種方式很難進(jìn)行比較復(fù)雜的分析,不能充分利用起日志的價值.隨著Docker容器技術(shù)的不斷發(fā)展,Docker容器技術(shù)的應(yīng)用范圍也越來越廣.與傳統(tǒng)的主機(jī)、虛擬機(jī)技術(shù)相比,Docker容器產(chǎn)生的日志分散在不同相互隔離的容器中,并且事先并不知道容器應(yīng)用部署在哪一臺機(jī)器上,給日志的收集帶來一定的挑戰(zhàn),這也迫切需要一種方式來收集存儲日志.容器具有即用即銷的特點(diǎn),容器中的存儲會隨著容器的關(guān)閉而被刪除,雖然可以將日志文件掛載到宿主機(jī)上,但是容器會經(jīng)常漂移,給日志的統(tǒng)一查看帶來挑戰(zhàn).本文采用Kubernetes實(shí)現(xiàn)容器管理、服務(wù)發(fā)現(xiàn)及調(diào)度,使用主流的開源日志收集系統(tǒng)ELK實(shí)現(xiàn)日志的存儲、查看,并通過緩存技術(shù)Redis消息隊(duì)列提供可靠的數(shù)據(jù)傳輸,將分散在不同容器中的日志統(tǒng)一收集存儲,提高運(yùn)維人員的工作效率.

        1 相關(guān)技術(shù)

        1.1 Docker技術(shù)

        Docker[2]是一個開源基于Linux操作系統(tǒng)虛擬化技術(shù)的高級容器引擎,可以將應(yīng)用及開發(fā)環(huán)境打包到一個可移植的容器中.為了避免啟動和維護(hù)虛擬機(jī)的開銷,Docker使用Linux內(nèi)核資源隔離技術(shù)(如cgroups、namespace)、聯(lián)合文件系統(tǒng)(如aufs)等技術(shù)實(shí)現(xiàn)多個容器在一個Linux內(nèi)核中相互獨(dú)立[3].與傳統(tǒng)的虛擬機(jī)需要虛擬出一個完整的操作系統(tǒng)相比,Docker是一種細(xì)粒度、輕量級的虛擬化技術(shù),屬于操作系統(tǒng)級虛擬化.圖1顯示Docker容器技術(shù)與虛擬機(jī)的原理對比.

        圖1 Docker容器與虛擬機(jī)的原理對比

        Docker是秒級啟動,而虛擬機(jī)的啟動速度是分鐘級;Docker容器作為一種輕量級的虛擬技術(shù),其單機(jī)支持上千容器,而虛擬機(jī)由于需要虛擬出完整的操作系統(tǒng),單機(jī)一般只支持幾十個;Docker資源利用率比虛擬機(jī)高,資源占用少[4].

        1.2 Kubernetes技術(shù)

        Kubernetes(K8s)[5]是Goolge開源的軟件,提供了一個完備的分布式系統(tǒng)支撐平臺,是Docker生態(tài)圈中的重要一員.它提供了強(qiáng)大的故障發(fā)現(xiàn)、負(fù)載均衡、自我修復(fù)、滾動升級、資源調(diào)度管理、自動擴(kuò)縮容等多個功能,具備的完善的集群管理的能力.并且其對現(xiàn)有的平臺侵入性較小,現(xiàn)有平臺容易升級改造遷移到Kubernetes上.

        Kubernetes集群由 Master節(jié)點(diǎn)和Node節(jié)點(diǎn)組成,其中Master節(jié)點(diǎn)運(yùn)行集群管理方面的進(jìn)程(kubeapiserver、kuber-controller-manager和 kube-scheduler),負(fù)責(zé)實(shí)現(xiàn)整個集群的Pod調(diào)度、彈性伸縮、安全控制、資源管理等.Node節(jié)點(diǎn)是集群的工作節(jié)點(diǎn),主要負(fù)責(zé)運(yùn)行真正的應(yīng)用程序,通過運(yùn)行kublete、kubeproxy服務(wù)進(jìn)程,來負(fù)責(zé)Pod的創(chuàng)建、啟動、監(jiān)控等,kube-proxy還提供了負(fù)載均衡.與傳統(tǒng)的容器相比,Pod是管理的最小運(yùn)行單元,而并非容器.圖2顯示Kubernetes的系統(tǒng)架構(gòu)圖.

        1.3 相關(guān)研究

        目前,針對Kubernetes的日志收集提出了多種方案.Kubernetes官方推薦采用的方案是Flunetd +Elasticsearch + Kibana,通過使用DaemonSet的方式在每一個Node節(jié)點(diǎn)上啟動一個Flunetd來收集日志文件(包括/var/log、/var/lib/docker/containers),常見的收集器還有Filebeat、Logstash;陳堅娟等人[6]提出Logstash agent + Kafka + Logstash + Elasticsearch +Kibana結(jié)構(gòu),并將容器產(chǎn)生的日志掛載到宿主機(jī)的指定目錄上,通過Node上啟動的Logstash agent 來收集指定目錄及/var/lib/docker目錄下的日志;羅東鋒等人[7]提出了基于Docker的大規(guī)模日志采集與分析系統(tǒng),主要使用Flunetd + Kafka + Flunetd + Elasticsearch +Kibana實(shí)現(xiàn)大規(guī)模日志采集;周德永等人[8]提出了在Node節(jié)點(diǎn)上部署Logspout收集日志,并Logstash Shipper轉(zhuǎn)發(fā)送容器日志,后轉(zhuǎn)發(fā)給Redis做緩沖,再有Logstash轉(zhuǎn)發(fā)至Elasticsearch進(jìn)行存儲,Kibana進(jìn)行可視化.

        Filebeat具有占用內(nèi)存較低,性價比較高的特點(diǎn),本文采用Filebeat作為日志文件的采集器,并針對兩種輸出方式的日志文件采用不同的收集方式,輸出到控制臺的日志文件,這類文件主要保存在/var/lib/docker/containers/目錄下,/var/log/container軟鏈接到該目錄下,該日志文件主要通過在Node節(jié)點(diǎn)上部署Filebeat進(jìn)行收集;未輸出到控制臺的日志文件,這類文件主要根據(jù)業(yè)務(wù)需求保存在不同的目錄下,并且日志文件的格式也不盡相同,此類日志文件通過在每一個Pod節(jié)點(diǎn)部署Filebeat來進(jìn)行日志收集,此方法可解決傳統(tǒng)日志文件通過掛載到宿主機(jī)上進(jìn)行收集時需要統(tǒng)一日志文件收集的規(guī)則、目錄和輸出方式的缺點(diǎn).

        圖2 Kubernetes系統(tǒng)架構(gòu)

        2 系統(tǒng)架構(gòu)

        該系統(tǒng)的整個架構(gòu)(如圖3)從左到右共分為5層,第1層數(shù)據(jù)采集層,主要負(fù)責(zé)采集業(yè)務(wù)集群中的日志,并將日志發(fā)送給Redis服務(wù)中,采用的日志收集器為Filebeat;第2層為數(shù)據(jù)緩存層,該層使用Redis作為緩存;第3層為數(shù)據(jù)轉(zhuǎn)發(fā)層,該層主要負(fù)責(zé)去Redis集群拉數(shù)據(jù),轉(zhuǎn)發(fā)到Elasticsearch;第4層為數(shù)據(jù)存儲層,該層使用Elasticsearch把收到的數(shù)據(jù)進(jìn)行存儲,寫入磁盤;第5層主要使用Kibana處理數(shù)據(jù)檢索請求,并進(jìn)行數(shù)據(jù)展示[7].

        圖3 日志分析系統(tǒng)架構(gòu)圖

        2.1 數(shù)據(jù)采集層

        數(shù)據(jù)采集層主要負(fù)責(zé)采集各個服務(wù)器上不同的文件,進(jìn)行預(yù)處理后將數(shù)據(jù)傳送到數(shù)據(jù)緩存層.目前主流的采集器主要有Logstash、Fluentd、Filebeat,本文采用Filebeat作為主要的采集器,Filebeat相比與Logstash、Fluentd的內(nèi)存使用較低,性價比較高.

        表1 Logstash、Fluentd、Filebeat對比

        本文采用Kubernetes來實(shí)現(xiàn)容器管理、服務(wù)發(fā)現(xiàn)及調(diào)度,使用Filebeat作為采集器來采集日志文件.日志文件按照輸出的不同可以分為兩種:1)輸出到控制臺的日志文件.這類文件主要保存在/var/log/containers/目錄下;2)應(yīng)用日志(未輸出到控制臺的日志)輸出到指定文件下的文件.本文針對兩種不同的日志文件,使用不同的方式.如圖4為日志采集層.

        圖4 日志采集層

        輸出到控制臺的日志文件,這類文件都會保存在/var/lib/docker/containers/目錄下,以*-json.log的命名,/var/log/containers軟鏈接到該目錄下.該類日志文件主要使用每個Node節(jié)點(diǎn)上個運(yùn)行的一個Filebeat容器進(jìn)行日志采集,然后匯總到Redis緩存中.本文采用以DaemonSet的方式將Filebeat作為Kubernetes的一種資源對象運(yùn)行在Node節(jié)點(diǎn)上.

        針對未輸出到控制臺的日志文件,這些文件主要存儲在容器中的指定目錄下,由于不同應(yīng)用產(chǎn)生的日志文件格式不同,位置不同,如果采用將Pod的日志掛載到宿主機(jī)上,進(jìn)行日志收集,需要統(tǒng)一日志收集規(guī)則、目錄和輸出方式,而各個文件各有不同,同時為了高擴(kuò)展性、方便維護(hù)和升級,本文針對這類文件采用以每個Pod為單位進(jìn)行日志收集.用戶也可根據(jù)實(shí)際需求,來決定是否需要在Pod中使用Filebeat.

        2.2 數(shù)據(jù)緩存層

        為了防止發(fā)送和接收速率不同而造成數(shù)據(jù)丟失問題,在數(shù)據(jù)采集層和數(shù)據(jù)轉(zhuǎn)發(fā)層之間搭建了消息隊(duì)列,起到緩存作用.Redis[9]是一個開源、高性能、基于內(nèi)存的鍵值對數(shù)據(jù)庫,支持?jǐn)?shù)據(jù)持久化和訂閱發(fā)布機(jī)制等高級特性,能夠滿足本系統(tǒng)的要求.為提高系統(tǒng)的性能和可靠性,該層使用Redis消息隊(duì)列作為緩存.

        2.3 數(shù)據(jù)轉(zhuǎn)發(fā)層

        數(shù)據(jù)轉(zhuǎn)發(fā)層作為Redis隊(duì)列的消費(fèi)者,從Redis隊(duì)列中拉取消息并轉(zhuǎn)發(fā)到Elasticsearch數(shù)據(jù)存儲層進(jìn)行處理.本文采用Logstash實(shí)現(xiàn)日志的拉取、處理、轉(zhuǎn)發(fā).由于日志中存在字段不完整、格式不一致或者噪聲數(shù)據(jù),為了降低這些對數(shù)據(jù)存儲帶來的沖擊,同時提高數(shù)據(jù)的質(zhì)量,在數(shù)據(jù)轉(zhuǎn)發(fā)層需要對數(shù)據(jù)進(jìn)行預(yù)處理,使數(shù)據(jù)統(tǒng)一格式,過濾掉噪聲數(shù)據(jù)等.

        輸出到控制臺的的日志文件,/var/log/containers/*-*-*_*_*.log代表的命名規(guī)則為:podName_namespace_deploymentName-containerID.log,針對日志文件名稱解析出deploymentName、podName、containerID、namespace字段,以下是Logstash部分配置信息:

        2.4 數(shù)據(jù)存儲層

        數(shù)據(jù)存儲層使用Elasticsearch集群,數(shù)據(jù)轉(zhuǎn)發(fā)層將日志逐條插入到數(shù)據(jù)存儲層的Elasticsearch集群中.Elasticsearch[10]是一個實(shí)時分布式搜索和分析引擎,基于Apache Lucene(TM)的開源搜索引擎,使用Lucene作為實(shí)現(xiàn)所有索引和搜索的功能,它通過簡單的RESTful API來隱藏Lucene的復(fù)雜性,使全文搜索變得簡單.

        2.5 數(shù)據(jù)檢索和展示層

        Kibana是開源的數(shù)據(jù)分析和圖像化展示的平臺.Kibana基于Apache License2.0 開源協(xié)議,可以對Elasticsearch索引中存儲的數(shù)據(jù)進(jìn)行搜索、分析、查看,可以進(jìn)行數(shù)據(jù)分析和統(tǒng)計,并且可以繪制各種圖表展示結(jié)果.Kibana支持布爾運(yùn)算符、通配符和字段篩選進(jìn)行模糊匹配,并且其提供了Web界面,方便用戶查看結(jié)果.

        3 實(shí)驗(yàn)測試

        本文重點(diǎn)驗(yàn)證系統(tǒng)整體的有效性.通過部署在同一局域網(wǎng)的5臺PC機(jī)搭建集群進(jìn)行測試.每臺PC機(jī)的硬件換件為主頻3.1 GHz的四核CPU、內(nèi)存4 GB、磁盤200 GB,軟件環(huán)境為CentOS 7.2(64 bit)、Elasticsearch 6.0.0、Kibana 6.0.0、Filebeat 6.0.0、Redis、Kubernetes 1.6.其中1臺作為Kubernetes的Master節(jié)點(diǎn),3臺作為Kubernetes的Node節(jié)點(diǎn),Kubernetes的集群部署信息如表2.圖5、圖6為實(shí)驗(yàn)結(jié)果.

        表2 Kubernetes集群部署信息

        圖5 未輸出到控制臺日志

        4 結(jié)論

        本文將零散的日志統(tǒng)一收集存儲,并采用Kubernetes實(shí)現(xiàn)容器管理、服務(wù)發(fā)現(xiàn)及調(diào)度,使用主流的開源日志收集系統(tǒng)ELK實(shí)現(xiàn)日志的存儲、查看,并通過緩存技術(shù)Redis消息隊(duì)列提供可靠的數(shù)據(jù)傳輸,提高運(yùn)維人員的工作效率.本系統(tǒng)可實(shí)現(xiàn)實(shí)時高效收集日志、處理分析,并進(jìn)行可視化展示.由于使用Kubernetes作為容器的管理工具,可實(shí)現(xiàn)快速部署、自動擴(kuò)縮容、資源管理等.本系統(tǒng)不僅解決了日志的統(tǒng)一收集,針對不同的日志文件采用不同的收集策略,用戶靈活配置,同時也解決了容器的即用即銷造成的漂移問題.下一步 工作將對采集到的日志進(jìn)行挖掘,發(fā)現(xiàn)有價值的信息.

        圖6 輸出到控制臺日志

        猜你喜歡
        開源日志容器
        Different Containers不同的容器
        一名老黨員的工作日志
        華人時刊(2021年13期)2021-11-27 09:19:02
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        難以置信的事情
        五毛錢能買多少頭牛
        游學(xué)日志
        大家說:開源、人工智能及創(chuàng)新
        開源中國開源世界高峰論壇圓桌會議縱論開源與互聯(lián)網(wǎng)+創(chuàng)新2.0
        取米
        開源計算機(jī)輔助翻譯工具研究
        少妇内射视频播放舔大片| 人妻少妇精品视频专区二区三区| 日本精品一区二区三区二人码| 亚欧免费无码aⅴ在线观看| 色老汉免费网站免费视频| 久久久久久久久中文字幕| 国产女主播福利一区二区| 本道天堂成在人线av无码免费| 中文字幕在线亚洲日韩6页| 亚洲亚洲网站三级片在线| 免费在线观看视频专区| 国产精品国产三级国产密月| 狼人香蕉香蕉在线28 - 百度| 一区二区日韩国产精品| 国产av一区二区三区香蕉| 人妻久久一区二区三区蜜桃| 亚洲精品乱码久久久久久金桔影视| 久久免费大片| 精品少妇一区二区三区四区| 欧美xxxxx高潮喷水麻豆| 国产精品久久久久久影视 | 两个人看的www中文在线观看| 亚洲 美腿 欧美 偷拍| 国产成人国产三级国产精品 | 97久久香蕉国产线看观看| 国产高清国内精品福利99久久| 日本女优免费一区二区三区| 久久99国产精品久久99| 亚洲精品国偷拍自产在线观看蜜臀| 亚洲图片第二页| 亚洲高清国产成人精品久久 | 国产精品系列亚洲第一| 中文字幕日韩精品永久在线| 蜜臀性色av免费| 亚洲AV电影天堂男人的天堂| 国产一级黄色性生活片| 色综合久久网| 夜夜爽一区二区三区精品| 日韩精品首页在线观看| 男人的天堂一区二av| 久久久精品人妻一区二区三区蜜桃 |