Elasticsearch學習(6) ELK6.X版本+分詞器+log4j2的日志系統


  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就可以看見我們同步的日志信息了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM