日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Spring Cloud 實現(xiàn)分布式實時日志分析采集的三種方案

來源: 責(zé)編: 時間:2023-11-28 09:35:35 227觀看
導(dǎo)讀ELK 已經(jīng)成為目前最流行的集中式日志解決方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等組件組成,來共同完成實時日志的收集,存儲,展示等一站式的解決方案。本文將會介紹ELK常見的架構(gòu)以及相關(guān)問題解決。Fileb

ELK 已經(jīng)成為目前最流行的集中式日志解決方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等組件組成,來共同完成實時日志的收集,存儲,展示等一站式的解決方案。本文將會介紹ELK常見的架構(gòu)以及相關(guān)問題解決。N0L28資訊網(wǎng)——每日最新資訊28at.com

  1. Filebeat:Filebeat是一款輕量級,占用服務(wù)資源非常少的數(shù)據(jù)收集引擎,它是ELK家族的新成員,可以代替Logstash作為在應(yīng)用服務(wù)器端的日志收集引擎,支持將收集到的數(shù)據(jù)輸出到Kafka,Redis等隊列。
  2. Logstash:數(shù)據(jù)收集引擎,相較于Filebeat比較重量級,但它集成了大量的插件,支持豐富的數(shù)據(jù)源收集,對收集的數(shù)據(jù)可以過濾,分析,格式化日志格式。
  3. Elasticsearch:分布式數(shù)據(jù)搜索引擎,基于Apache Lucene實現(xiàn),可集群,提供數(shù)據(jù)的集中式存儲,分析,以及強大的數(shù)據(jù)搜索和聚合功能。
  4. Kibana:數(shù)據(jù)的可視化平臺,通過該web平臺可以實時的查看 Elasticsearch 中的相關(guān)數(shù)據(jù),并提供了豐富的圖表統(tǒng)計功能。

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

1. Logstash作為日志收集器

這種架構(gòu)是比較原始的部署架構(gòu),在各應(yīng)用服務(wù)器端分別部署一個Logstash組件,作為日志收集器,然后將Logstash收集到的數(shù)據(jù)過濾、分析、格式化處理后發(fā)送至Elasticsearch存儲,最后使用Kibana進行可視化展示。N0L28資訊網(wǎng)——每日最新資訊28at.com

這種架構(gòu)不足的是:Logstash比較耗服務(wù)器資源,所以會增加應(yīng)用服務(wù)器端的負載壓力。N0L28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片N0L28資訊網(wǎng)——每日最新資訊28at.com

2. Filebeat作為日志收集器

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

圖片圖片N0L28資訊網(wǎng)——每日最新資訊28at.com

3. 引入緩存隊列的部署架構(gòu)

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

圖片圖片N0L28資訊網(wǎng)——每日最新資訊28at.com

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

第一種部署架構(gòu)由于資源占用問題,現(xiàn)已很少使用,目前使用最多的是第二種部署架構(gòu),至于第三種部署架構(gòu)個人覺得沒有必要引入消息隊列,除非有其他需求,因為在數(shù)據(jù)量較大的情況下,F(xiàn)ilebeat 使用壓力敏感協(xié)議向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。N0L28資訊網(wǎng)——每日最新資訊28at.com

如果 Logstash 正在繁忙地處理數(shù)據(jù),它會告知 Filebeat 減慢讀取速度。擁塞解決后,F(xiàn)ilebeat 將恢復(fù)初始速度并繼續(xù)發(fā)送數(shù)據(jù)。N0L28資訊網(wǎng)——每日最新資訊28at.com

問題及解決方案

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

系統(tǒng)應(yīng)用中的日志一般都是以特定格式進行打印的,屬于同一條日志的數(shù)據(jù)可能分多行進行打印,那么在使用ELK收集日志的時候就需要將屬于同一條日志的多行數(shù)據(jù)進行合并。N0L28資訊網(wǎng)——每日最新資訊28at.com

解決方案:使用Filebeat或Logstash中的multiline多行合并插件來實現(xiàn)N0L28資訊網(wǎng)——每日最新資訊28at.com

在使用multiline多行合并插件的時候需要注意,不同的ELK部署架構(gòu)可能multiline的使用方式也不同,如果是本文的第一種部署架構(gòu),那么multiline需要在Logstash中配置使用,如果是第二種部署架構(gòu),那么multiline需要在Filebeat中配置使用,無需再在Logstash中配置multiline。N0L28資訊網(wǎng)——每日最新資訊28at.com

1)multiline在Filebeat中的配置方式:N0L28資訊網(wǎng)——每日最新資訊28at.com

filebeat.prospectors:    -     paths:          - /home/project/elk/logs/test.log     input_type: log     multiline:      pattern: '^/['      negate: true      match: afteroutput:   logstash:      hosts: ["localhost:5044"]
  • pattern:正則表達式
  • negate:默認為false,表示匹配pattern的行合并到上一行;true表示不匹配pattern的行合并到上一行
  • match:after表示合并到上一行的末尾,before表示合并到上一行的行首

如:N0L28資訊網(wǎng)——每日最新資訊28at.com

pattern: '/['negate: truematch: after

該配置表示將不匹配pattern模式的行合并到上一行的末尾N0L28資訊網(wǎng)——每日最新資訊28at.com

2)multiline在Logstash中的配置方式N0L28資訊網(wǎng)——每日最新資訊28at.com

input {    beats {    port => 5044}}filter {    multiline {        pattern => "%{LOGLEVEL}/s*/]"        negate => true        what => "previous"    }}output {    elasticsearch {    hosts => "localhost:9200"    }}

(1)Logstash中配置的what屬性值為previous,相當于Filebeat中的after,Logstash中配置的what屬性值為next,相當于Filebeat中的before。N0L28資訊網(wǎng)——每日最新資訊28at.com

(2)pattern => "%{LOGLEVEL}/s*/]" 中的LOGLEVEL是Logstash預(yù)制的正則匹配模式,預(yù)制的還有好多常用的正則匹配模式,詳細請看:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patternsN0L28資訊網(wǎng)——每日最新資訊28at.com

2. 問題:如何將Kibana中顯示日志的時間字段替換為日志信息中的時間?

默認情況下,我們在Kibana中查看的時間字段與日志信息中的時間不一致,因為默認的時間字段值是日志收集時的當前時間,所以需要將該字段的時間替換為日志信息中的時間。N0L28資訊網(wǎng)——每日最新資訊28at.com

解決方案:使用grok分詞插件與date時間格式化插件來實現(xiàn)N0L28資訊網(wǎng)——每日最新資訊28at.com

在Logstash的配置文件的過濾器中配置grok分詞插件與date時間格式化插件,如:N0L28資訊網(wǎng)——每日最新資訊28at.com

input {    beats {    port => 5044    }}filter {    multiline {        pattern => "%{LOGLEVEL}/s*/]/[%{YEAR}%{MONTHNUM}%{MONTHDAY}/s+%{TIME}/]"        negate => true        what => "previous"}grok { match => [ "message" , "(?<customer_time>%{YEAR}%{MONTHNUM}%{MONTHDAY}/s+%{TIME})" ]}date {     match => ["customer_time", "yyyyMMdd HH:mm:ss,SSS"] //格式化時間     target => "@timestamp" //替換默認的時間字段    }}output {    elasticsearch {    hosts => "localhost:9200"    }}

如要匹配的日志格式為:[DEBUG][20170811 10:07:31,359][DefaultBeanDefinitionDocumentReader:106] Loading bean definitions,解析出該日志的時間字段的方式有:N0L28資訊網(wǎng)——每日最新資訊28at.com

① 通過引入寫好的表達式文件,如表達式文件為customer_patterns,內(nèi)容為:CUSTOMER_TIME %{YEAR}%{MONTHNUM}%{MONTHDAY}/s+%{TIME}N0L28資訊網(wǎng)——每日最新資訊28at.com

注:內(nèi)容格式為:[自定義表達式名稱] [正則表達式]N0L28資訊網(wǎng)——每日最新資訊28at.com

然后logstash中就可以這樣引用:N0L28資訊網(wǎng)——每日最新資訊28at.com

filter {    grok {    patterns_dir => ["./customer-patterms/mypatterns"] //引用表達式文件路徑    match => [ "message" , "%{CUSTOMER_TIME:customer_time}" ] //使用自定義的grok表達式    }}

② 以配置項的方式,規(guī)則為:(?<自定義表達式名稱>正則匹配規(guī)則),如:N0L28資訊網(wǎng)——每日最新資訊28at.com

filter {    grok {    match => [ "message" , "(?<customer_time>%{YEAR}%{MONTHNUM}%{MONTHDAY}/s+%{TIME})" ]    }}

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

一般在Kibana中顯示的日志數(shù)據(jù)混合了來自不同系統(tǒng)模塊的數(shù)據(jù),那么如何來選擇或者過濾只查看指定的系統(tǒng)模塊的日志數(shù)據(jù)?N0L28資訊網(wǎng)——每日最新資訊28at.com

解決方案:新增標識不同系統(tǒng)模塊的字段或根據(jù)不同系統(tǒng)模塊建ES索引N0L28資訊網(wǎng)——每日最新資訊28at.com

1、新增標識不同系統(tǒng)模塊的字段,然后在Kibana中可以根據(jù)該字段來過濾查詢不同模塊的數(shù)據(jù),這里以第二種部署架構(gòu)講解,在Filebeat中的配置內(nèi)容為:N0L28資訊網(wǎng)——每日最新資訊28at.com

filebeat.prospectors:    -   paths:  - /home/project/elk/logs/account.log   input_type: log     multiline:      pattern: '^/['      negate: true      match: after   fields: //新增log_from字段      log_from: account    -   paths:  - /home/project/elk/logs/customer.log   input_type: log   multiline:      pattern: '^/['      negate: true      match: after   fields:      log_from: customeroutput:   logstash:      hosts: ["localhost:5044"]

通過新增:log_from字段來標識不同的系統(tǒng)模塊日志N0L28資訊網(wǎng)——每日最新資訊28at.com

2、根據(jù)不同的系統(tǒng)模塊配置對應(yīng)的ES索引,然后在Kibana中創(chuàng)建對應(yīng)的索引模式匹配,即可在頁面通過索引模式下拉框選擇不同的系統(tǒng)模塊數(shù)據(jù)。N0L28資訊網(wǎng)——每日最新資訊28at.com

filebeat.prospectors:    -   paths:  - /home/project/elk/logs/account.log     input_type: log     multiline:      pattern: '^/['      negate: true      match: after   fields: //新增log_from字段      log_from: account    -   paths:  - /home/project/elk/logs/customer.log   input_type: log   multiline:      pattern: '^/['      negate: true      match: after   fields:      log_from: customeroutput:   logstash:      hosts: ["localhost:5044"]

這里以第二種部署架構(gòu)講解,分為兩步:N0L28資訊網(wǎng)——每日最新資訊28at.com

① 在Filebeat中的配置內(nèi)容為:N0L28資訊網(wǎng)——每日最新資訊28at.com

filebeat.prospectors:    -     paths:      - /home/project/elk/logs/account.log     input_type: log     multiline:       pattern: '^/['       negate: true       match: after     document_type: account    -     paths:      - /home/project/elk/logs/customer.log     input_type: log     multiline:       pattern: '^/['       negate: true       match: after     document_type: customeroutput:    logstash:    hosts: ["localhost:5044"]

通過document_type來標識不同系統(tǒng)模塊N0L28資訊網(wǎng)——每日最新資訊28at.com

② 修改Logstash中output的配置內(nèi)容為:N0L28資訊網(wǎng)——每日最新資訊28at.com

output {    elasticsearch {    hosts => "localhost:9200"    index => "%{type}"    }}

N0L28資訊網(wǎng)——每日最新資訊28at.com

在output中增加index屬性,%{type}表示按不同的document_type值建ES索引N0L28資訊網(wǎng)——每日最新資訊28at.com

N0L28資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

本文主要介紹了ELK實時日志分析的三種部署架構(gòu),以及不同架構(gòu)所能解決的問題,這三種架構(gòu)中第二種部署方式是時下最流行也是最常用的部署方式。N0L28資訊網(wǎng)——每日最新資訊28at.com

最后介紹了ELK作在日志分析中的一些問題與解決方案,說在最后,ELK不僅僅可以用來作為分布式日志數(shù)據(jù)集中式查詢和管理,還可以用來作為項目應(yīng)用以及服務(wù)器資源監(jiān)控等場景,更多內(nèi)容請看官網(wǎng)。N0L28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-34630-0.htmlSpring Cloud 實現(xiàn)分布式實時日志分析采集的三種方案

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 趕緊收藏!Java Stream 的使用技巧

下一篇: 從容應(yīng)對高并發(fā):RabbitMQ與消息限流策略的完美結(jié)合

標簽:
  • 熱門焦點
  • 6月安卓手機好評榜:魅族20 Pro蟬聯(lián)冠軍

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年6月1日至6月30日,僅限國內(nèi)市場。第一名:魅族20 Pro好評率:95%5月份的時候魅族20 Pro就是
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協(xié)調(diào)和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現(xiàn)手段有以下幾種方式:Object 類下
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業(yè)務(wù)走向消亡。騰訊在長音頻領(lǐng)域還在摸索。為
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產(chǎn)懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風(fēng)頭無兩。你可以說陳思誠的
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報道 從三強爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • 三星顯示已開始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個重要的競爭領(lǐng)域,對顯示屏這一關(guān)
  • 電博會與軟博會實現(xiàn)"線下+云端"的雙線融合

    在本次“電博會”與“軟博會”雙展會利好條件的加持下,既可以發(fā)揮展會拉動人流、信息流、資金流實現(xiàn)快速交互流動的作用,繼而推動區(qū)域經(jīng)濟良性發(fā)展;又可以聚
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學(xué)的小東加入了一個大學(xué)生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 福海县| 上蔡县| 曲麻莱县| 丽水市| 南召县| 兴仁县| 溧阳市| 雷波县| 宾川县| 巧家县| 凤城市| 南岸区| 苍溪县| 封丘县| 句容市| 宜兰县| 东兰县| 临泉县| 收藏| 南部县| 金山区| 军事| 稻城县| 朝阳区| 潜江市| 前郭尔| 武陟县| 大渡口区| 广平县| 庆城县| 响水县| 雅江县| 哈密市| 清徐县| 福建省| 邵武市| 鱼台县| 远安县| 平南县| 永新县| 永登县|