Elasticsearch學習(5) Elasticsearch+logstash +filebeat+log4j的日志系統


最近需要使用Elasticsearch做一個日志系統,本文只介紹log4j內容同步到Elasticsearch,至於日志的查詢和分類,會在后面介紹。

一、配置並打開Elasticsearch

  這個操作不在敘述,需要注意的是,本文使用的是elasticsearch-5.6.8版本的elasticsearch,所以logstash和filebeat也是5.6.8,本文使用的環境是windows系統。

二、配置filebeat

  之前我們已經介紹了使用logstash來同步mysql數據庫,那么logstash是否也能同步log4j?在查詢文檔后發現,logstash在低版本情況下是可以直接同步log4j的,但是如果使用logstash5.X的版本,logstash變不在支持log4j轉而將這個功能放入到了Filebeat實現,所以使用log4j的日志系統將采用Elasticsearch+logstash +filebeat+log4j的形式。

       首先介紹一下什么是Filebeat。Filebeat是一個日志文件托運工具,在你的服務器上安裝客戶端后,filebeat會監控日志目錄或者指定的日志文件,追蹤讀取這些文件(追蹤文件的變化,不停的讀),並且轉發這些信息到elasticsearch或者logstarsh中存放,接下來將介紹配置filebeat。

  1.下載filebeat,需要注意的是filebeat版本應該elasticsearch版本一致,官網地址:

   https://www.elastic.co/downloads/beats/filebeat

  2.修改filebeat文件中的filebeat.yml文件

   input_type:long

   path:

    - 你的log4j文件絕對路徑 

   

    在filebeat.yml文件中的Elasticsearch output項可以修改Elasticsearch 的地址

    

    在filebeat.yml文件中的Logstash  output項修改Logstash的地址(這個地址和端口號必須與接下來配置Logstash的.conf文件一致)

     

    以上的配置已經可以同步,其他的詳細配置,可以參考這篇博客:https://blog.csdn.net/haozhuxuan/article/details/79738447

  3.啟動filebeat

    打開命令終端,進入filebeat文件夾運行:     

filebeat -e -c filebeat.yml

三、配置Logstash文件

  1.在Logstash文件夾下創建conf文件夾

  

  2.在創建的conf文件夾中創建log4j.conf文件,文件的內容為:

          

input{
    beats {
        port => 9600
    }
}
output{
    stdout{ codec => rubydebug }
    elasticsearch { 
        hosts => "localhost:9200"  
        index =>  "t-server-%{+YYYY.MM.dd}"
        document_type => "log4j_type"
    }
}

  3.運行log4j.conf文件:

  使用windows終端進入Logstash文件下,運行:

logstash -f ../conf/log4j.conf

   完成這一步,整個同步過程就已經完成了

四、測試

   本文使用的是spring boot項目,需要添加log4j的依賴:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>

   在application.properties同一級下創建log4j.properties文件:

### 設置###
log4j.rootLogger = debug,stdout,D

### 輸出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 輸出DEBUG 級別以上的日志到=E:/log/debug.log
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =E:/log/debug.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

編寫測試代碼:

import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController 
public class LoginController {
    
     private static final Logger logger = Logger.getLogger(LoginController.class);
    
    @RequestMapping("/getUser")
    public String getUser(){
         logger.debug("debug message!");
         logger.info("info message!");
         logger.warn("warn message!");
         logger.error("error message!");

         try{
             System.out.println(10/0);
         }catch(Exception e){
             logger.error(e);
         }
        return "返回成功";

    }
    
}
測試代碼

訪問:http://localhost:8880/getUser 后,我們可以在head中看見,剛才的日志信息已經同步到Elasticsearch中

  

 


免責聲明!

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



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