1. 程式人生 > >win10 下elk 日誌分析系統對接springBoot總結教程

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

命中

搭建對接成功。到此結束。

不喜勿噴,如有瑕疵,請多指教,謝謝。