Springboot+ELK實現日志系統簡單搭建


前面簡單介紹了ELK三劍客中的其中兩個Elasticsearch和Kibana的簡單使用,如果對這兩個不了解,可以看下下面的

  Centos7安裝Elasticsearch和Kibana

  搜索引擎基礎---分詞和倒排索引簡述

  Elasticsearch基礎入門

 現在來看看這最后一個Logstash

還是這個地方https://elasticsearch.cn/download/  下載與es,kibana版本對應的Logstash,然后解壓。

 

1.和es一樣,如果機器內存小,有想玩這個的,記得把config下面的jvm.options文件中的jvm參數設置小點,我設置的256m:

-Xms256m

-Xmx256m

 

2.寫配置文件logstash.conf,默認有個logstash-sample.conf這個文件,可以直接拿來修改

內容如下:

#暴露9090端口作為輸入
input {
  tcp {
    #host 192.168.0.69
    port => 9090
  }
}
#輸出到elasticsearch,此輸出創建一個名為myserver的索引
output {
  elasticsearch {
    hosts => ["http://192.168.0.67:9200"]
    index => "myserver"
  }
}

以上就是最簡單的配置了

 

3.使用此配置文件啟動logstash:./bin/logstash -f ./config/logstash.conf

 

 4.創建spingboot工程,springboot日志本來就用的logback,但是我們還需要引入相關的logstash依賴

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

 

5.在appliction.properties配置文件指定logstash服務的端口位置,就是上面logstash 暴露出來的輸入端口,我們上面的是9090端口

logstash.address=192.168.0.69:9090

 

6.logback日志配置文件:logback-spring.xmlresources下面和工程appliction配置文件同級)

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--logstash地址,從application.properties中獲取-->
    <springProperty scope="context" name="LOGSTASH_ADDRESS" source="logstash.address"/>

    <!--輸出到logstash的appender-->
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--可以訪問的logstash日志收集端口-->
        <destination>${LOGSTASH_ADDRESS}</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>Asia/Shanghai</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "app": "my-server",
                        "level": "%level",
                        "thread": "%thread",
                        "logger": "%logger{50} %M %L ",
                        "message": "%msg"
                        }
                    </pattern>
                </pattern>
                <stackTrace>
                    <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                        <maxDepthPerThrowable>100</maxDepthPerThrowable>
                        <rootCauseFirst>true</rootCauseFirst>
                        <inlineHash>true</inlineHash>
                    </throwableConverter>
                </stackTrace>
            </providers>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>
</configuration>

 

7.啟動springboot服務,這個時候我們會發現控制台不會再輸出日志了,因為日志輸出到logstash,再由logstash發送到es去了。

調用我們接口查看下服務是否成功啟動了

說明服務已經成功啟動,現在去看kibana查看日志信息

 

 8.搜索是否有myserver的索引,可以看到tomcat 8080端口啟動的日志

 

 我們每次都這樣搜索來看是不是很不方便,我們可以把這個索引加到discover中,后續只需要在里面搜索我們想要內容就行了

 

9.Management --->Index Patterns --->Create index pattern--->搜索匹配的索引然后創建

 

 

 

 

 

 創建好了就可以在kibana的index列表看見這個索引了

 

 

 

 現在就可以discover中使用這個索引了,不用再去dev tools工具中去寫查詢了

 

我們着看剛才調用接口打印的日志就可以在discover中看見了

 

 

 

 

 

10.discover中信息篩選:默認的篩選時間是15分鍾內的,如果時間比較久了就需要重新選擇下時間,然后輸入要搜索的內容port,我們就可以看到之前服務起動的日志了

 

ELK簡單的集成使用,大概就是這個樣子了,當然logstash中還可以去過濾處理數據。像我們現在的日志在kibana里面的格式是很難看的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM