ELK6.X版本對log4j2日志系統功能進行了一次整合,它和filebeat的實現方式不同,filebeat是采取讀日志文件的方式進行同步到elasticsearch,相當於是讀文件同步。現在有了log4j2,我們可以通過socket的方式以log4j2的日志項目作為客戶端,發送生成的日志信息到Logstash,從而同步日志信息到elasticsearch。
本文是windows環境下進行,采用的ELK、分詞器都是6.8.6版本的。
一、配置分詞器
在6.4版本后的elasticsearch中,配置IK分詞器非常的簡單:
第一步:下載IK分詞器:https://github.com/medcl/elasticsearch-analysis-ik/releases
選擇與elasticsearch相同版本的分詞器,即6.8.6:
第二步:下載完成后解壓到elasticsearch的文件夾中plugins目錄下的analysis-ik,沒有就創建,這樣分詞器就配置成功了,不需要像之前那樣再去修改elasticsearch的配置文件夾
第三步:啟動elasticsearch
二、配置Kibana
第一步:在官網下載Kibana
https://www.elastic.co/cn/downloads/past-releases/kibana-6-8-6
下載后直接解壓
第二步:可以在config目錄下的kibana.yml中配置kibana的地址和端口號,以及es的地址
第三步:運行bin下面的kibana.bat,啟動kibana
啟動成功后可以看到:
三、配置Logstash
Logstash的配置方式與原來一樣,創建一個新的配置文件,連接日志系統,我們在bin目錄下創建一個logstash.conf,文件的內容:
input { tcp { mode => "server" host => "127.0.0.1"#日志系統的地址 port => 4568#日志系統的端口號 } } output { elasticsearch { hosts => ["localhost:9200"] index => "log"#在ES中創建的索引名稱 document_type => "log4j2" } }
然后通過命令啟動logstash
logstash -f logstash.conf
四、log4j2的日志系統
現在大多數項目都開始選用了log4j2的日志工具,這個工具非常方便,至於它的優點我們不詳細介紹了,這里就以一個基於springboot的demo給es發送日志信息,
第一步:引入maven,這里我只貼上了log4j2和lombok的maven
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
第二步:配置log4j2-spring.xml文件
在log4j2中,棄用了原來的properties配置文件方式,取而代之的是我們原來使用的xml文件,在這里,我們只介紹socket的配置
<?xml version="1.0" encoding="UTF-8" ?> <Configuration> <Properties> <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1}:%L -%m%n</Property> </Properties> <Appenders> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}" /> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> </Console> <!--這個是連接到Logstash的socket配置,IP和端口就是Logstash中創建的配置文件的IP和端口 --> <Socket name="logstash-tcp" host="localhost" port="4568" protocol="TCP"> <PatternLayout pattern="${LOG_PATTERN}" /> </Socket> </Appenders> <Loggers> <Root level="DEBUG"> <AppenderRef ref="Console"/> <AppenderRef ref="logstash-tcp" /> </Root> </Loggers> </Configuration>
第三步:編寫測試代碼,啟動項目
import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class Main { @RequestMapping("/getUser") public String getUser(){ log.debug("debug 這個是debug!"); log.info("info 這個是info!"); log.warn("warn 這個是warn!"); log.error("error 這個是error!"); return "返回成功"; } }
五、測試
啟動日志demo后,訪問http://localhost:80/getUser,然后我們去kibana界面,kibana界面地址是http://localhost:5601,配置我們的信息
第一步:創建index
點擊Management → 點擊Create index pattern → 輸入log(這個就是在Logstash配置文件中創建的index)→ next step
具體操作如圖:
第二步:創建好index后,我們點擊discover就可以看見我們同步的日志信息了