前面簡單介紹了ELK三劍客中的其中兩個Elasticsearch和Kibana的簡單使用,如果對這兩個不了解,可以看下下面的
現在來看看這最后一個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.xml(resources下面和工程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里面的格式是很難看的。