天天看點

【ES】Elastricsearch + LogStash + Kibana收集日志

為什麼要用ELK?

        ELK實際上是三個工具,Elastricsearch + LogStash + Kibana。一般情況下我們可以把日志儲存在日志檔案當中,也可以把日志存入資料庫當中。但随着業務量的增加,日志資料量也會不斷增加。我們通過ELK可以更好的收集、管理、分析日志。

        收集過程架構圖

【ES】Elastricsearch + LogStash + Kibana收集日志

1、ElasticSearch

        Elasticsearch是一個基于Lucene的搜尋伺服器。它提供了一個分布式多使用者能力的全文搜尋引擎,基于RESTful web接口。它能很友善的使大量資料具有搜尋、分析和探索的能力。

本文使用ES版本為elasticsearch-7.6.2。官網下載下傳,安裝配置十分簡單,可自行百度。

2、Logstash

        Logstash 是開源的伺服器端資料處理管道,能夠同時從多個來源采集資料,轉換資料,然後将資料發送到您最喜歡的 “存儲庫” 中。這邊我們的存儲庫是 Elasticsearch。

本文使用Logstash版本為logstash-7.6.2。

        官網下載下傳位址:https://www.elastic.co/cn/downloads/logstash

【ES】Elastricsearch + LogStash + Kibana收集日志

        建立一個配置檔案logstash-simple.conf,内容為:

input { stdin { } }
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}
           

        執行啟動腳本:

【ES】Elastricsearch + LogStash + Kibana收集日志

        通路測試:http://localhost:9600

        注意:在執行啟動腳本時可能會報錯,我把我遇到的問題列出來

1,找不到或無法加載主類Files 
解決方法:去除logstash.bat中"%CLASSPATH%"的引号。是的是去除引号。 
2,報編碼問題,參數發生錯誤。 (ArgumentError) invalid byte sequence in US-ASCII 
解決方法:logstash安裝路徑不能有中文。
3,不到或無法加載主類 7.7.0\logstash-core\lib\jars\animal-sniffer-annotations-1.14.jar 
解決方法:logstash安裝路徑不能有空格。
           

3、Kibana

        Kibana 讓您能夠可視化 Elasticsearch 中的資料并操作 Elastic Stack,是以您可以在這裡解開任何疑問:例如,為何會在淩晨 2:00 被傳呼,雨水會對季度資料造成怎樣的影響。

本文使用kibana-7.6.2-windows-x86_64版本

        官網下載下傳:https://www.elastic.co/downloads/kibana

        修改Kebana配置檔案,讓其指向ElasticSearch

【ES】Elastricsearch + LogStash + Kibana收集日志

         輕按兩下腳本啟動,通路測試:http://localhost:5601

【ES】Elastricsearch + LogStash + Kibana收集日志

4、整合SpringBoot + Logstash

        首先修改logstash的配置并重新開機。作用是開啟logstash服務,接收logback日志。

input { 
  # stdin { }
  tcp { 
    # host:port就是上面appender中的 destination,
 # 這裡其實把logstash作為服務,開啟9250端口接收logback發出的消息 
    host => "127.0.0.1" port => 9250 mode => "server" tags => ["tags"] codec => json_lines 
  }
}
output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}
           

        在maven配置檔案中添加依賴

<dependency>
    <groupId>net.logstash.logback</groupId>
	<artifactId>logstash-logback-encoder</artifactId>
	<version>5.2</version>
</dependency>
           

         添加日志架構logback的配置,配置日志輸出

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logback</contextName>
    <!--日志導出的到 Logstash-->
    <appender name="stash"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:9250</destination>
        <!-- encoder必須配置,有多種可選 -->
        <encoder charset="UTF-8"
                 class="net.logstash.logback.encoder.LogstashEncoder" >
            <!-- "appname":"ye_test" 的作用是指定建立索引的名字時用,并且在生成的文檔中會多了這個字段  -->
            <customFields>{"appname":"ye_test"}</customFields>
        </encoder>
    </appender>

    <!--日志輸出到控制台規則 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d[%level]%c{100}.%M:%L%m%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="stash"/>
    </root>

</configuration>
           

        啟動springboot項目,并在Kibana中檢視日志

【ES】Elastricsearch + LogStash + Kibana收集日志
【ES】Elastricsearch + LogStash + Kibana收集日志

        參考文章 :https://mp.weixin.qq.com/s/QC7AtZ8xW1z9MrbCtiUEvw

繼續閱讀