現現在隨着微服務的興起,服務之間的調用方式多種多樣,而這樣給運維帶來了複雜性,好比一個訂單業務,可能後臺有幾十個甚至一百多個服務來共同工做的結果,在此過程當中,若是有一個環節出問題,則須要排查問題抽取日誌是一件很痛苦的事情,因此日誌收集應運而生java
名詞解釋redis
E elasticsearch 主要負責針對數據的搜索相關spring
L:logstash 日誌收集器centos
K:kibnan 主要負責view層ruby
若是把一個ELK當作MVC的話,則E 對應mvc的model層,logstash對應controller層,kibnan對應view層服務器
本文使用單機版進行安裝,集羣版不在贅述restful
安裝步驟mvc
centos 6.5 jdk1.8 logstash5.5.1 elasticsearch 5.5.51 kibnan 5.5.1app
elk的下載地址如:https://www.elastic.co/downloads運維
將java8包放入到服務器中,配置/etc/profile JAVA_HOME和PATH
使用java -version驗證是否成
將tar包複製到服務器中,並運行nohup bin/elasticsearch
& 默認啓動端口9200
使用 curl localhost:9200驗證
將tar包複製到服務器中,新建文件logstash.conf作爲logstash的配置文件
內容以下:
input { tcp{ host => "192.168.0.2" port => "9250" type => "tcplog" } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } }
具體參數詳查logstash
input支持 tcp udp file redis等各類方式輸入
使用nohup logstash -f ../config/logstash.conf啓動
經過curl 192.168.0.2:9250 驗證是否成功
複製到服務器並解壓 使用nohup ./kibana &啓動 默認端口5601
使用curl localhost:5601驗證
微服務適配
在微服務中,使用logback打印日誌,在集成logstash過程當中,使用logback的集成類將日誌經過restful接口將日誌寫到logstash,logstash將日誌存檔,並供elasticsearch查詢
步驟以下:
<!-- logstach start--> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.8</version> </dependency> <!-- logstach end-->
新增
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:9250</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" /> </appender>
並在root中添加appender
至此 微服務與elk的集成基本完成
後續能夠添加微服務跟蹤相關技術 :sleuth