0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

分布式實(shí)時(shí)日志:ELK的部署架構(gòu)方案

馬哥Linux運(yùn)維 ? 來(lái)源:oschina ? 2023-01-08 09:56 ? 次閱讀

一、概述

ELK 已經(jīng)成為目前最流行的集中式日志解決方案,它主要是由 Beats、Logstash、Elasticsearch、Kibana 等組件組成,來(lái)共同完成實(shí)時(shí)日志的收集,存儲(chǔ),展示等一站式的解決方案。本文將會(huì)介紹ELK常見的架構(gòu)以及相關(guān)問題解決。

  • Filebeat:Filebeat是一款輕量級(jí),占用服務(wù)資源非常少的數(shù)據(jù)收集引擎,它是ELK家族的新成員,可以代替 Logstash 作為在應(yīng)用服務(wù)器端的日志收集引擎,支持將收集到的數(shù)據(jù)輸出到Kafka,Redis等隊(duì)列。

  • Logstash:數(shù)據(jù)收集引擎,相較于Filebeat比較重量級(jí),但它集成了大量的插件,支持豐富的數(shù)據(jù)源收集,對(duì)收集的數(shù)據(jù)可以過濾,分析,格式化日志格式。

  • Elasticsearch:分布式數(shù)據(jù)搜索引擎,基于Apache Lucene實(shí)現(xiàn),可集群,提供數(shù)據(jù)的集中式存儲(chǔ),分析,以及強(qiáng)大的數(shù)據(jù)搜索和聚合功能。

  • Kibana:數(shù)據(jù)的可視化平臺(tái),通過該web平臺(tái)可以實(shí)時(shí)的查看 Elasticsearch 中的相關(guān)數(shù)據(jù),并提供了豐富的圖表統(tǒng)計(jì)功能。

二、ELK常見部署架構(gòu)

2.1 Logstash作為日志收集器

這種架構(gòu)是比較原始的部署架構(gòu),在各應(yīng)用服務(wù)器端分別部署一個(gè) Logstash 組件,作為日志收集器,然后將 Logstash 收集到的數(shù)據(jù)過濾、分析、格式化處理后發(fā)送至Elasticsearch 存儲(chǔ),最后使用 Kibana 進(jìn)行可視化展示,這種架構(gòu)不足的是:

Logstash 比較耗服務(wù)器資源,所以會(huì)增加應(yīng)用服務(wù)器端的負(fù)載壓力。

dd3db814-8e8b-11ed-bfe3-dac502259ad0.png

2.2 Filebeat作為日志收集器

該架構(gòu)與第一種架構(gòu)唯一不同的是:應(yīng)用端日志收集器換成了Filebeat,F(xiàn)ilebeat輕量,占用服務(wù)器資源少,所以使用Filebeat作為應(yīng)用服務(wù)器端的日志收集器,一般Filebeat會(huì)配合Logstash一起使用,這種部署方式也是目前最常用的架構(gòu)。

dd64a172-8e8b-11ed-bfe3-dac502259ad0.png

2.3 引入緩存隊(duì)列的部署架構(gòu)

該架構(gòu)在第二種架構(gòu)的基礎(chǔ)上引入了 Redis 緩存隊(duì)列(還可以是其他消息隊(duì)列),將Filebeat收集到的數(shù)據(jù)發(fā)送至Redis,然后在通過 Logstasth 讀取 Redis 中的數(shù)據(jù),這種架構(gòu)主要是解決大數(shù)據(jù)量下的日志收集方案,使用緩存隊(duì)列主要是解決數(shù)據(jù)安全與均衡Logstash與Elasticsearch負(fù)載壓力。

dd8ed262-8e8b-11ed-bfe3-dac502259ad0.png

2.4 以上三種架構(gòu)的總結(jié)

第一種部署架構(gòu)由于資源占用問題,現(xiàn)已很少使用,目前使用最多的是第二種部署架構(gòu),至于第三種部署架構(gòu)個(gè)人覺得沒有必要引入消息隊(duì)列,除非有其他需求,因?yàn)樵跀?shù)據(jù)量較大的情況下,F(xiàn)ilebeat 使用壓力敏感協(xié)議向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。如果 Logstash 正在繁忙地處理數(shù)據(jù),它會(huì)告知 Filebeat 減慢讀取速度。擁塞解決后,F(xiàn)ilebeat 將恢復(fù)初始速度并繼續(xù)發(fā)送數(shù)據(jù)。

三、問題及解決方案

問題:如何實(shí)現(xiàn)日志的多行合并功能?

系統(tǒng)應(yīng)用中的日志一般都是以特定格式進(jìn)行打印的,屬于同一條日志的數(shù)據(jù)可能分多行進(jìn)行打印,那么在使用ELK收集日志的時(shí)候就需要將屬于同一條日志的多行數(shù)據(jù)進(jìn)行合并。

解決方案:使用 Filebeat 或 Logstash 中的 multiline 多行合并插件來(lái)實(shí)現(xiàn)。

在使用 multiline 多行合并插件的時(shí)候需要注意,不同的 ELK 部署架構(gòu)可能 multiline 的使用方式也不同,如果是本文的第一種部署架構(gòu),那么 multiline 需要在 Logstash 中配置使用,如果是第二種部署架構(gòu),那么 multiline 需要在 Filebeat 中配置使用,無(wú)需再在Logstash 中配置 multiline。

1、multiline 在 Filebeat 中的配置方式:

dda9efe8-8e8b-11ed-bfe3-dac502259ad0.png

  • pattern:正則表達(dá)式;
  • negate:默認(rèn)為false,表示匹配pattern的行合并到上一行;true表示不匹配pattern的行合并到上一行;
  • match:after表示合并到上一行的末尾,before表示合并到上一行的行首。

如:

pattern: ‘[‘
negate: true
match: after

該配置表示將不匹配pattern模式的行合并到上一行的末尾2、multiline在Logstash中的配置方式

ddcb82f2-8e8b-11ed-bfe3-dac502259ad0.png

(1)Logstash 中配置的 what 屬性值為 previous,相當(dāng)于 Filebeat 中的 after,Logstash 中配置的 what 屬性值為 next,相當(dāng)于 Filebeat 中的 before。

(2)pattern => “%{LOGLEVEL}s*]“ 中的LOGLEVEL是Logstash預(yù)制的正則匹配模式,預(yù)制的還有好多常用的正則匹配模式,詳細(xì)請(qǐng)看:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns

問題:如何將 Kibana 中顯示日志的時(shí)間字段替換為日志信息中的時(shí)間?

默認(rèn)情況下,我們?cè)?Kibana 中查看的時(shí)間字段與日志信息中的時(shí)間不一致,因?yàn)槟J(rèn)的時(shí)間字段值是日志收集時(shí)的當(dāng)前時(shí)間,所以需要將該字段的時(shí)間替換為日志信息中的時(shí)間。

解決方案:使用 grok 分詞插件與 date 時(shí)間格式化插件來(lái)實(shí)現(xiàn)

在 Logstash 的配置文件的過濾器中配置 grok 分詞插件與 date 時(shí)間格式化插件,如:

ddea7cfc-8e8b-11ed-bfe3-dac502259ad0.png

如要匹配的日志格式為:“[DEBUG][20170811 1031,359][DefaultBeanDefinitionDocumentReader:106] Loading bean definitions”,解析出該日志的時(shí)間字段的方式有:① 通過引入寫好的表達(dá)式文件,如表達(dá)式文件為customer_patterns,內(nèi)容為:
CUSTOMER_TIME %{YEAR}%{MONTHNUM}%{MONTHDAY}s+%{TIME}

注:內(nèi)容格式為:[自定義表達(dá)式名稱] [正則表達(dá)式]

然后 logstash 中就可以這樣引用:

de11cae6-8e8b-11ed-bfe3-dac502259ad0.png

② 以配置項(xiàng)的方式,規(guī)則為:(?<自定義表達(dá)式名稱>正則匹配規(guī)則),如:

de2083b0-8e8b-11ed-bfe3-dac502259ad0.png

問題:如何在Kibana中通過選擇不同的系統(tǒng)日志模塊來(lái)查看數(shù)據(jù)

一般在Kibana中顯示的日志數(shù)據(jù)混合了來(lái)自不同系統(tǒng)模塊的數(shù)據(jù),那么如何來(lái)選擇或者過濾只查看指定的系統(tǒng)模塊的日志數(shù)據(jù)?

解決方案:新增標(biāo)識(shí)不同系統(tǒng)模塊的字段或根據(jù)不同系統(tǒng)模塊建ES索引

1、新增標(biāo)識(shí)不同系統(tǒng)模塊的字段,然后在Kibana中可以根據(jù)該字段來(lái)過濾查詢不同模塊的數(shù)據(jù)

這里以第二種部署架構(gòu)講解,在 Filebeat 中的配置內(nèi)容為:

de444e8a-8e8b-11ed-bfe3-dac502259ad0.png

通過新增:log_from字段來(lái)標(biāo)識(shí)不同的系統(tǒng)模塊日志

2、根據(jù)不同的系統(tǒng)模塊配置對(duì)應(yīng)的ES索引,然后在Kibana中創(chuàng)建對(duì)應(yīng)的索引模式匹配,即可在頁(yè)面通過索引模式下拉框選擇不同的系統(tǒng)模塊數(shù)據(jù)。

這里以第二種部署架構(gòu)講解,分為兩步:

① 在Filebeat中的配置內(nèi)容為:

de6e244e-8e8b-11ed-bfe3-dac502259ad0.png

通過document_type來(lái)標(biāo)識(shí)不同系統(tǒng)模塊

② 修改Logstash中output的配置內(nèi)容為:

在 output 中增加 index 屬性,%{type}表示按不同的document_type值建ES索引

四、總結(jié)

本文主要介紹了ELK實(shí)時(shí)日志分析的三種部署架構(gòu),以及不同架構(gòu)所能解決的問題,這三種架構(gòu)中第二種部署方式是時(shí)下最流行也是最常用的部署方式,最后介紹了ELK作在日志分析中的一些問題與解決方案,說(shuō)在最后,ELK不僅僅可以用來(lái)作為分布式日志數(shù)據(jù)集中式查詢和管理,還可以用來(lái)作為項(xiàng)目應(yīng)用以及服務(wù)器資源監(jiān)控等場(chǎng)景,更多內(nèi)容請(qǐng)看官網(wǎng)。
審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9717

    瀏覽量

    87388
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    10832
  • 收集器
    +關(guān)注

    關(guān)注

    0

    文章

    30

    瀏覽量

    3311

原文標(biāo)題:分布式實(shí)時(shí)日志:ELK 的部署架構(gòu)方案

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 0人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在CentOS系統(tǒng)中部署ELK日志分析系統(tǒng)

    日志分析已成為企業(yè)監(jiān)控、故障排查和性能優(yōu)化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆棧作為一種強(qiáng)大的開源解決方案,提供了高效的日志收集、
    的頭像 發(fā)表于 05-08 11:47 ?198次閱讀
    如何在CentOS系統(tǒng)中<b class='flag-5'>部署</b><b class='flag-5'>ELK</b><b class='flag-5'>日志</b>分析系統(tǒng)

    分布式日志追蹤ID實(shí)戰(zhàn)

    作者:京東物流 張小龍 本文通過介紹分布式應(yīng)用下各個(gè)場(chǎng)景的全局日志ID透?jìng)魉悸罚约敖榻B分布式日志追蹤ID簡(jiǎn)單實(shí)現(xiàn)原理和實(shí)戰(zhàn)效果,從而達(dá)到通過提高
    的頭像 發(fā)表于 01-20 10:16 ?589次閱讀

    分布式云化數(shù)據(jù)庫(kù)有哪些類型

    分布式云化數(shù)據(jù)庫(kù)有哪些類型?分布式云化數(shù)據(jù)庫(kù)主要類型包括:關(guān)系型分布式數(shù)據(jù)庫(kù)、非關(guān)系型分布式數(shù)據(jù)庫(kù)、新SQL分布式數(shù)據(jù)庫(kù)、以列方式存儲(chǔ)數(shù)據(jù)、
    的頭像 發(fā)表于 01-15 09:43 ?418次閱讀

    基于ptp的分布式系統(tǒng)設(shè)計(jì)

    。 PTP概述 PTP是一種網(wǎng)絡(luò)時(shí)間同步協(xié)議,它允許網(wǎng)絡(luò)中的設(shè)備同步它們的時(shí)鐘。PTP基于IEEE 1588標(biāo)準(zhǔn),旨在提供亞微秒級(jí)別的時(shí)間同步精度。PTP通過在網(wǎng)絡(luò)中傳播時(shí)間信息,并使用這些信息來(lái)校正本地時(shí)鐘,從而實(shí)現(xiàn)精確的時(shí)間同步。 系統(tǒng)架構(gòu) 基于PTP的分布式系統(tǒng)通常
    的頭像 發(fā)表于 12-29 10:09 ?482次閱讀

    分布式、域控及SOA架構(gòu)車身功能測(cè)試方案

    北匯信息推出分布式、域控以及SOA架構(gòu)的車身功能測(cè)試解決方案,支持在實(shí)驗(yàn)室環(huán)境下完成車身單部件、系統(tǒng)級(jí)功能自動(dòng)化測(cè)試,可以極大地提升車身功能的可靠性和穩(wěn)定性。
    的頭像 發(fā)表于 12-27 09:05 ?2497次閱讀
    <b class='flag-5'>分布式</b>、域控及SOA<b class='flag-5'>架構(gòu)</b>車身功能測(cè)試<b class='flag-5'>方案</b>

    企業(yè)如何用ELK技術(shù)棧實(shí)現(xiàn)數(shù)據(jù)流量爆炸增長(zhǎng)

    ELK簡(jiǎn)介 什么是ELK 通俗來(lái)講,ELK 是由 Elasticsearch、Logstash、Kibana 三個(gè)開源軟件的組成的一個(gè)組合體,ELK 是 elastic 公司研發(fā)的一套
    的頭像 發(fā)表于 12-19 11:38 ?579次閱讀
    企業(yè)如何用<b class='flag-5'>ELK</b>技術(shù)棧實(shí)現(xiàn)數(shù)據(jù)流量爆炸<b class='flag-5'>式</b>增長(zhǎng)

    分布式光纖測(cè)溫解決方案

    分布式光纖測(cè)溫解決方案
    的頭像 發(fā)表于 11-12 01:02 ?506次閱讀
    <b class='flag-5'>分布式</b>光纖測(cè)溫解決<b class='flag-5'>方案</b>

    分布式光纖測(cè)溫是什么?應(yīng)用領(lǐng)域是?

    時(shí),該處的散射光特性會(huì)受到影響。通過高速信號(hào)采集與數(shù)據(jù)處理技術(shù),可以準(zhǔn)確地定位發(fā)生溫度變化的位置,并給出實(shí)時(shí)的溫度信息。簡(jiǎn)而言之,分布式光纖測(cè)溫技術(shù)將整條傳輸光纖作為傳感器,光纖上的每一點(diǎn)都兼具“傳”和“感”
    的頭像 發(fā)表于 10-24 15:30 ?1140次閱讀
    <b class='flag-5'>分布式</b>光纖測(cè)溫是什么?應(yīng)用領(lǐng)域是?

    分布式輸電線路故障定位中的分布式是指什么

    所謂分布式指的是產(chǎn)品的部署方式,是相對(duì)于集中式而言的。 一、部署方式 分散安裝:分布式輸電線路故障定位系統(tǒng)中的采集裝置需要安裝在輸電線路的多個(gè)位置,通常是每隔一定距離設(shè)置一個(gè)監(jiān)測(cè)點(diǎn),以
    的頭像 發(fā)表于 10-16 11:39 ?636次閱讀
    <b class='flag-5'>分布式</b>輸電線路故障定位中的<b class='flag-5'>分布式</b>是指什么

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲(chǔ)解決方案

    醫(yī)療PACS影像數(shù)據(jù)的極速分布式塊存儲(chǔ)解決方案
    的頭像 發(fā)表于 08-23 10:13 ?647次閱讀
    醫(yī)療PACS影像數(shù)據(jù)的極速<b class='flag-5'>分布式</b>塊存儲(chǔ)解決<b class='flag-5'>方案</b>

    如何長(zhǎng)時(shí)間抓取DTU設(shè)備實(shí)時(shí)日志

    如何長(zhǎng)時(shí)間抓取DTU設(shè)備實(shí)時(shí)日志?
    發(fā)表于 07-26 06:31

    InDTU300系列產(chǎn)品如何輸出實(shí)時(shí)日志?

    “保存配置”,提示是否重啟時(shí),選擇不重啟。點(diǎn)擊維護(hù)~實(shí)時(shí)日志。 點(diǎn)擊開始接收,稍等幾秒會(huì)看到模塊輸出的實(shí)時(shí)日志,故障復(fù)現(xiàn)后,依次點(diǎn)擊停止接收~導(dǎo)出日志,將日志導(dǎo)出即可。 如果只想監(jiān)視I
    發(fā)表于 07-25 06:05

    一體式IO與分布式IO:工業(yè)控制系統(tǒng)的兩種架構(gòu)

    一體式IO與分布式IO架構(gòu)各有優(yōu)勢(shì)和局限性。選擇合適的IO架構(gòu)需要根據(jù)實(shí)際的生產(chǎn)需求、系統(tǒng)規(guī)模、成本預(yù)算和維護(hù)能力綜合考慮。隨著工業(yè)自動(dòng)化技術(shù)的發(fā)展,分布式IO
    的頭像 發(fā)表于 07-17 16:12 ?1970次閱讀
    一體式IO與<b class='flag-5'>分布式</b>IO:工業(yè)控制系統(tǒng)的兩種<b class='flag-5'>架構(gòu)</b>

    基于WDS的保險(xiǎn)公司極速分布式存儲(chǔ)建設(shè)高速混合云方案

    基于WDS的保險(xiǎn)公司極速分布式存儲(chǔ)建設(shè)高速混合云方案
    的頭像 發(fā)表于 07-08 09:52 ?567次閱讀
    基于WDS的保險(xiǎn)公司極速<b class='flag-5'>分布式</b>存儲(chǔ)建設(shè)高速混合云<b class='flag-5'>方案</b>

    黑龍江電力高性能WDS分布式存儲(chǔ)系統(tǒng)解決方案

    黑龍江電力高性能WDS分布式存儲(chǔ)系統(tǒng)解決方案
    的頭像 發(fā)表于 07-01 09:54 ?631次閱讀
    黑龍江電力高性能WDS<b class='flag-5'>分布式</b>存儲(chǔ)系統(tǒng)解決<b class='flag-5'>方案</b>