日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

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

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

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

1. Logstash作為日志收集器

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

這種架構(gòu)不足的是:Logstash比較耗服務(wù)器資源,所以會(huì)增加應(yīng)用服務(wù)器端的負(fù)載壓力。

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

2. Filebeat作為日志收集器

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

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

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

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

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

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

第一種部署架構(gòu)由于資源占用問(wèn)題,現(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ù)。

問(wèn)題及解決方案

1. 問(wèn)題:如何實(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中的配置方式:

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

如:

pattern: '['
negate: true
match: after

該配置表示將不匹配pattern模式的行合并到上一行的末尾

2)multiline在Logstash中的配置方式

input {
    beats {
    port => 5044
}
}

filter {
    multiline {
        pattern => "%{LOGLEVEL}s*]"
        negate => true
        what => "previous"
    }
}

output {
    elasticsearch {
    hosts => "localhost:9200"
    }
}

(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

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

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

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

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

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"] //格式化時(shí)間
     target => "@timestamp" //替換默認(rèn)的時(shí)間字段
    }
}

output {
    elasticsearch {
    hosts => "localhost:9200"
    }
}

如要匹配的日志格式為:[DEBUG][20170811 10:07:31,359][DefaultBeanDefinitionDocumentReader:106] Loading bean definitions,解析出該日志的時(shí)間字段的方式有:

① 通過(guò)引入寫好的表達(dá)式文件,如表達(dá)式文件為customer_patterns,內(nèi)容為:CUSTOMER_TIME %{YEAR}%{MONTHNUM}%{MONTHDAY}s+%{TIME}

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

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

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

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

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

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

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

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

1、新增標(biāo)識(shí)不同系統(tǒng)模塊的字段,然后在Kibana中可以根據(jù)該字段來(lái)過(guò)濾查詢不同模塊的數(shù)據(jù),這里以第二種部署架構(gòu)講解,在Filebeat中的配置內(nèi)容為:

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: customer
output:
   logstash:
      hosts: ["localhost:5044"]

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

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

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: customer
output:
   logstash:
      hosts: ["localhost:5044"]

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

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

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: customer
output:
    logstash:
    hosts: ["localhost:5044"]

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

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

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

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

總結(jié)

本文主要介紹了ELK實(shí)時(shí)日志分析的三種部署架構(gòu),以及不同架構(gòu)所能解決的問(wèn)題,這三種架構(gòu)中第二種部署方式是時(shí)下最流行也是最常用的部署方式。

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

分享到:
標(biāo)簽:Spring Cloud
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定