win10 下elk 日誌分析系統對接springBoot總結教程
elk系統搭建過程 本節不做過多累贅 後續如果有需要 再補。直接對接專案日誌分析。
先建立springBoot專案,當然傳統的ssm也是可以的,這裡為了簡單,用springBoot 做例子。
pom.xml 新增logstash依賴支援 完整的依賴如下
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.1</version> </dependency> </dependencies>
在resource下新建logback-spring.xml檔案 內容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration> <configuration> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>127.0.0.1:9601</destination> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" > <customFields>{"appname":"springboot-log-elk"}</customFields> </encoder> </appender> <root level="INFO"> <appender-ref ref="LOGSTASH" /> </root> </configuration>
注意了,解釋一下配置。
<destination>127.0.0.1:9601</destination>:這個是你自己向logstash提供的原始檔,也就是專案的日誌輸出地址,輸出埠號
{"appname":"springboot-log-elk"}:這個東西會在logstash中的建立的 .conf檔案中用到,也就是 elasticsearch中的索引字首。後面會用到
在application.properties中 加入logback-spring.xml配置
logging:
config: classpath:logback-spring.xml
在專案中建立測試類 程式碼如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class ElkApplicationTests {
private final static Logger log = LoggerFactory.getLogger(Test.class);
@Before
public void setUp() {
}
@org.junit.Test
public void test() {
log.warn("我是一個warn");
log.info("我是一個info");
log.error("我是一個error");
log.trace("我是一個trace");
log.debug("我是一個debug");
}
}
好了 這樣 簡單的springBoot就搭建起來了。再來說elk.
啟動順序 elasticsearch ,如果elasticsearch版本高於5.x elasticsearch 的elasticsearch-head 外掛安裝比較複雜。在啟動elasticsearch-head
之後,需要做一個配置了。在logstash下自己建立的 .conf 檔案中作如下改動
input {
tcp {
host => "localhost"
port => 9601
mode => "server"
tags => ["tags"]
codec => json_lines
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "%{[appname]}-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug}
}
切記 這裡的input 為logstash的輸入源,也就是日誌的輸出源,所以host是localhost,port為自己配置的9601
output 為logstash的輸出源,即elasticsearch 的輸入源 所以hosts要與elasticsearch.yml中設定的一樣
這裡所提到的appname就是在logback-spring.xml中配置的那個名稱 ,配置完畢
啟動logstash 這裡的啟動我是在cmd 命令列裡啟動的 服務啟動也是可以的 區別在於 cmd啟動 可以直接看 輸出內容 系統服務啟動 就需要去logstash下的log資料夾下查詢日誌。
最後啟動kibana
這樣elk系統啟動 啟動springBoot
執行test,這個時候logstash的控制檯會輸出東西,log的日誌裡也可以檢視
類似於
這時 在elasticsearch中檢視
發現了一致 這時我們開啟kibana介面 新增 Index Patterns 取名為 springboot-log* 建立
在discover中選擇剛剛的springboot-log*
會出現以下介面
則表示成功。搜尋 我是一個info
命中
搭建對接成功。到此結束。
不喜勿噴,如有瑕疵,請多指教,謝謝。