• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Kubernetes的分布式ELK日志分析系統(tǒng)

    2017-04-27 16:15:57陳建娟劉行行
    電子技術(shù)與軟件工程 2016年15期
    關(guān)鍵詞:分布式

    陳建娟++劉行行

    摘 要 在大規(guī)模云服務(wù)及系統(tǒng)中,對(duì)日志的收集和集中處理具有重要作用,通過(guò)分析日志可以快速定位錯(cuò)誤,提前預(yù)警風(fēng)險(xiǎn)。本文結(jié)合開(kāi)源日志解決方案ELK和分布式消息隊(duì)列Kafka構(gòu)建了實(shí)時(shí)消息系統(tǒng),闡述了各組件的主要功能及其工作原理,并利用主流的云技術(shù)Kubernetes來(lái)實(shí)現(xiàn)快速部署和管理,通過(guò)ETCD和SKYDNS作為服務(wù)發(fā)現(xiàn),為分布式系統(tǒng)提供技術(shù)支撐?;贙ubernetes的分布式ELK日志分析系統(tǒng)具有靈活性,方便性等特點(diǎn),可用于企業(yè)快速搭建日志處理平臺(tái)。

    【關(guān)鍵詞】Kubernetes ELK 日志分析 分布式

    大數(shù)據(jù)時(shí)代,企業(yè)的IT構(gòu)架不斷擴(kuò)展,資源的種類和數(shù)量也越來(lái)越多,這標(biāo)志著企業(yè)IT系統(tǒng)建設(shè)的日趨完善,同時(shí)也意味著運(yùn)維管理將面臨更大的挑戰(zhàn)。優(yōu)秀的系統(tǒng)運(yùn)維平臺(tái)既能實(shí)現(xiàn)數(shù)據(jù)平臺(tái)各組件的集中式管理、方便系統(tǒng)運(yùn)維人員日常監(jiān)測(cè)、提升運(yùn)維效率,又能反饋系統(tǒng)運(yùn)行狀態(tài)給系統(tǒng)開(kāi)發(fā)人員。大規(guī)模云服務(wù)及系統(tǒng)中,日志系統(tǒng)是保障系統(tǒng)穩(wěn)定運(yùn)行不可或缺的一部分,通過(guò)把帶時(shí)間戳的基于時(shí)間序列的機(jī)器數(shù)據(jù)包括IT系統(tǒng)信息、物聯(lián)網(wǎng)各種傳感器信息進(jìn)行集中管理,并運(yùn)用實(shí)時(shí)數(shù)據(jù)處理技術(shù)對(duì)這些數(shù)據(jù)建立索引以及統(tǒng)計(jì),幫助快速定位問(wèn)題的根源,發(fā)現(xiàn)數(shù)據(jù)價(jià)值,提高工作效率。其重要性和監(jiān)控系統(tǒng)、自動(dòng)測(cè)試系統(tǒng)等相當(dāng)。

    1 ELK

    目前開(kāi)源的日志收集系統(tǒng)有很多,比如Scribe、Flume、Logstash、Fluentd等,日志存儲(chǔ)工具有Redis、HDFS、MangoDB、Elasticsearch等,分析軟件如Kibana、Graylog2等,構(gòu)建一個(gè)強(qiáng)健的集中化日志管理解決方案,需要多種工具的組合。本文采用ELK+Kafka實(shí)現(xiàn)日志收集分析,架構(gòu)如圖1所示。ELK能在大量日志中快速準(zhǔn)確定位故障,適合應(yīng)用級(jí)別的實(shí)時(shí)監(jiān)控和重要核心服務(wù)的報(bào)警。

    ELK是一套流行的一體化日志處理平臺(tái)解決方案,提供日志收集、處理、存儲(chǔ)、搜索、展示等全方位功能。由分布式搜素引擎ElasticSearch、日志采集解析工具Logstash、分析可視化平臺(tái)Kibana組成。

    Logstash是Ruby編寫(xiě)的一款分布式日志收集系統(tǒng),利用JVM的線程功能進(jìn)行并行的數(shù)據(jù)處理,支持多輸入源Input,F(xiàn)ilter中可以使用Grok、Mutat等插件來(lái)過(guò)濾文本和匹配的字段,Output指定日志去向,可以是消息隊(duì)列、Email、全文搜索引擎等幾十種目標(biāo)端。

    Elasticsearch是一個(gè)強(qiáng)大的具有搜索功能的無(wú)模式數(shù)據(jù)庫(kù),是一個(gè)近實(shí)時(shí)搜索平臺(tái),基于Lucene的分布式RESTfull搜素引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索、穩(wěn)定、可靠、快速、安裝使用方便。支持通過(guò)HTTP使用JSON進(jìn)行數(shù)據(jù)索引。

    Kibana提供日志分析的web可視化界面,利用ElasticSearch搜索功能,以秒為單位可視化數(shù)據(jù),支持Lucene的查詢字符串的語(yǔ)法和Elasticsearch的過(guò)濾功能。

    2 Kubernetes

    隨著云計(jì)算的推進(jìn),Docker作為主流云技術(shù)地位漸漸凸顯出來(lái)。Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎, 讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植容器中, 然后發(fā)布到任何流行的 Linux 機(jī)器上,Docker可以快速構(gòu)建一個(gè)高性能、超大規(guī)模的宿主機(jī)部署,但同時(shí)也給容器內(nèi)日志收集與分析帶來(lái)了挑戰(zhàn)。Kubernetes作為Docker生態(tài)圈中重要一員,是自動(dòng)化容器操作的平臺(tái),是Google開(kāi)源的容器集群管理系統(tǒng),提供資源調(diào)度、均衡容災(zāi)、服務(wù)注冊(cè)、動(dòng)態(tài)擴(kuò)縮容等功能套件。利用Kubernetes能方便地管理跨機(jī)器運(yùn)行容器化的應(yīng)用。一個(gè)典型的Kubernetes架構(gòu)包括Pod、Container、Label、ReplicationController、Service、Node、KubernetesMaster?;贙ubernetes的ELK只需一個(gè)部署文件,使用一條命令就可以部署多層容器的完整集群,可隨時(shí)擴(kuò)展或收縮容器規(guī)模,簡(jiǎn)化分布式系統(tǒng)構(gòu)建的過(guò)程。圖2顯示了部署一個(gè)pod所使用的json文件,通過(guò)kubectl命令即可部署并運(yùn)行一個(gè)pod,修改類型為‘ReplicationController即可實(shí)現(xiàn)多replicas部署。在分布式集群系統(tǒng)中,服務(wù)發(fā)現(xiàn)功能至關(guān)重要,針對(duì)企業(yè)級(jí)系統(tǒng)最重要的是有效地發(fā)現(xiàn)部署在各個(gè)物理環(huán)境中分布式的服務(wù),以及服務(wù)發(fā)現(xiàn)的引擎本身要能夠集群部署。本文采用etcd+skydns的技術(shù)組合來(lái)實(shí)現(xiàn)服務(wù)發(fā)現(xiàn),如圖3所示。

    skydns會(huì)通過(guò)讀取KubernetesAPI獲取服務(wù)的ip和port信息,同時(shí)以watch的方式發(fā)現(xiàn)service的變動(dòng)并收集變動(dòng)信息,并將對(duì)應(yīng)的ip信息注冊(cè)到etcd,而skydns通過(guò)etcd內(nèi)的dns記錄信息,開(kāi)啟對(duì)外端口提供服務(wù)。注冊(cè)和發(fā)現(xiàn)組件在容器中獨(dú)立運(yùn)行,負(fù)責(zé)監(jiān)聽(tīng)端口或者連接到其他主機(jī)的端口 ,不需要編寫(xiě)容器植入性代碼??梢詫?shí)現(xiàn)服務(wù)注冊(cè)集群,以及分布式的終端部署集成。

    3 日志系統(tǒng)框架

    使用Docker部署云平臺(tái)系統(tǒng)非常方便,但因?yàn)槿萜鞯母綦x性,收集容器內(nèi)的日志很不方便。容器中應(yīng)用的日志有兩個(gè)去向,日志寫(xiě)到控制臺(tái)或磁盤(pán)文件,這兩部分日志數(shù)據(jù)的生命期和容器相同,容器刪除后,日志也被刪除。收集容器應(yīng)用的日志可借助Docker的volume功能。在Host機(jī)器上開(kāi)辟一個(gè)固定目錄/path/a,產(chǎn)生日志的容器將日志文件所在目錄mount到/path/a目錄下的子目錄中,收集日志的容器Logstash再把目錄/path/amount到自己容器內(nèi)。這樣日志收集容器就能訪問(wèn)到所有日志文件了, 如圖4所示。另外,為了收集容器的stdout、stderr日志,還需要將host的/var/lib/docker/目錄mount到日志收集容器中,可以收集到j(luò)son日志。

    基于Kubernetes部署ELK非常方便,有各種現(xiàn)成的image可用。本文將Kubernetes、ELK、Kafka深度整合,構(gòu)建生產(chǎn)環(huán)境,組成分布式日志收集分析系統(tǒng),如圖5所示。多個(gè)獨(dú)立的Logstash agent(Shipper)部署在各個(gè)不同的Host上,負(fù)責(zé)收集不同來(lái)源的數(shù)據(jù),一個(gè)中心Logstash agent(Indexer)負(fù)責(zé)匯總和分析數(shù)據(jù),在中心agent前配置了KafkaBroker作為緩沖區(qū),中心agent后的Elasticsearch用于存儲(chǔ)和搜索數(shù)據(jù),前端的Kibana提供豐富的圖表展示。

    Shipper表示日志收集,使用Logstash收集各種來(lái)源的日志數(shù)據(jù),可以是系統(tǒng)日志、文件、redis、mq等等。Broker作為遠(yuǎn)程agent與中心agent之間的緩沖區(qū),使用Kafka實(shí)現(xiàn)。Logstashagent(Shipper)作為Kafka消息的生產(chǎn)者時(shí),Output 插件需要配置好KafkaBroker的列表,相當(dāng)于Kafka 集群主機(jī)的列表;相應(yīng)的,用作Kafka消費(fèi)者角色的 Logstashagent(Indexer),從broker中提取數(shù)據(jù),其Input插件就要配置好需要訂閱的Kafka中相應(yīng)消息的主題名稱和Zookeeper主機(jī)列表,執(zhí)行相關(guān)的分析和處理(Filter)。Kafka通過(guò)將數(shù)據(jù)持久化到硬盤(pán)的WriteAheadLog(WAL)保證數(shù)據(jù)可靠性與順序性。Kafka是依賴于Zookeeper的,它將每組消費(fèi)者消費(fèi)的相應(yīng)Topic的偏移量保存在Zookeeper中, 除了可靠性和先進(jìn)的Push&Pull架構(gòu)外,相較于傳統(tǒng)的消息隊(duì)列,Kafka有更大的吞吐量。簡(jiǎn)化的Shipper和Indexer配置如圖6和圖7所示。

    Elasticsearch用于存儲(chǔ)最終的數(shù)據(jù),并提供搜索功能。Kibana提供一個(gè)簡(jiǎn)單豐富的web界面,數(shù)據(jù)來(lái)自于Elasticsearch,支持各種查詢、統(tǒng)計(jì)和展示,圖8為UI動(dòng)態(tài)監(jiān)控?cái)?shù)據(jù)庫(kù)實(shí)例產(chǎn)生的各種日志。系統(tǒng)中設(shè)計(jì)了Syslog主要用于備份Elasticsearch的數(shù)據(jù),并可以輸出到遠(yuǎn)程的logserver進(jìn)行存儲(chǔ)。

    4 總結(jié)

    隨著虛擬技術(shù)的不斷發(fā)展,大規(guī)模云服務(wù)及系統(tǒng)的日志處理平臺(tái)是保障系統(tǒng)穩(wěn)定運(yùn)行的重要部分。本文結(jié)合目前主流的kubernetes和ELK簡(jiǎn)單介紹了各自在日志處理系統(tǒng)架構(gòu)中的功能。日志處理平臺(tái)不僅需要收集和分析日志,還需要對(duì)相應(yīng)的分析結(jié)果進(jìn)行處理,比如自動(dòng)報(bào)警、提前預(yù)警風(fēng)險(xiǎn)等?,F(xiàn)實(shí)中日志應(yīng)用場(chǎng)景多種多樣,日志處理系統(tǒng)需要不斷的完善和優(yōu)化。

    參考文獻(xiàn)

    [1]李祥池.基于ELK和Spark Streaming的 日志分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子科學(xué)技術(shù),2015.2(06):674-678.

    [2]王亞玲,李春陽(yáng),崔蔚,張晶.基于 Docker的PaaS 平臺(tái)建設(shè)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2016(03).

    [3]理解kubernetes核心概念[J].電腦編程技巧與維護(hù),2016(03).

    作者單位

    諾基亞通信系統(tǒng)技術(shù)(北京)有限公司 浙江省杭州市 310000

    猜你喜歡
    分布式
    基于RTDS的分布式光伏并網(wǎng)建模研究
    湖南電力(2022年3期)2022-07-07 08:56:58
    光伏:從嚴(yán)控制發(fā)展規(guī)模 分布式限定10GW
    能源(2018年5期)2018-06-15 08:55:58
    分布式光伏發(fā)展的四大矛盾
    能源(2017年7期)2018-01-19 05:05:03
    分布式光伏熱錢洶涌
    能源(2017年10期)2017-12-20 05:54:07
    基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
    分布式光伏:爆發(fā)還是徘徊
    能源(2017年5期)2017-07-06 09:25:54
    基于點(diǎn)估計(jì)法的分布式電源的配置優(yōu)化
    一種用于微電網(wǎng)分布式發(fā)電的新型Buck-Boost逆變器
    基于DDS的分布式三維協(xié)同仿真研究
    西門(mén)子 分布式I/O Simatic ET 200AL
    民乐县| 元谋县| 特克斯县| 望都县| 临桂县| 区。| 张家口市| 怀来县| 涡阳县| 读书| 平罗县| 大邑县| 威远县| 宣汉县| 开平市| 改则县| 泾阳县| 盐源县| 枝江市| 布拖县| 凤凰县| 灵台县| 云南省| 比如县| 合水县| 饶平县| 蒙山县| 新津县| 鄂州市| 东平县| 安庆市| 安丘市| 通化市| 高安市| 丹棱县| 东城区| 弥渡县| 阿尔山市| 汪清县| 南和县| 湘潭市|