1. 程式人生 > >SpringBoot配置ELK日誌分析系統搭建

SpringBoot配置ELK日誌分析系統搭建

SpringBoot配置ELK日誌分析系統

ELK介紹

引用網上別人的介紹:

Logstash:日誌收集工具,可以從本地磁碟,網路服務(自己監聽埠,接受使用者日誌),訊息佇列中收集各種各樣的日誌,然後進行過濾分析,並將日誌輸出到Elasticsearch中。

Elasticsearch:日誌分散式儲存/搜尋工具,原生支援叢集功能,可以將指定時間的日誌生成一個索引,加快日誌查詢和訪問。

Kibana:視覺化日誌Web展示工具,對Elasticsearch中儲存的日誌進行展示,還可以生成炫麗的儀表盤。

環境配置

準備工作

  1. 首先建議在linux上配置ELK會更為方便,Windows對元件相容較差,官網上各種版本都有可以自行下載。
    附上傳送門:https://www.elastic.co/cn/downloads
  2. 伺服器需要java執行環境,配置方式也不贅述了,不會的請移步傳送門:
    http://www.runoob.com/w3cnote/win7-linux-java-setup.html
  3. 在根目錄建立名為elk的資料夾
mkdir elk

將下載好的三個檔案解壓進資料夾中
部落格中資料夾的結構為:

elk:
	elasticsearch
	logstash
	kibana

配置Elasticsearch

vi /elk/elasticsearch/config/elasticsearch.yml
//配置外網連線,如果不能用請檢查防火牆配置
network.host: 0.0.0.0
http.port: 9200
//後臺啟動elasticsearch服務
/elk/elasticsearch/bin/elasticsearch &

啟動沒有報錯成功後,在瀏覽器輸入ip:9200埠,顯示下圖所示為啟動成功
在這裡插入圖片描述

配置Kibana

vi /elk/kibana/config/kibana.yml
//常用配置:
elasticsearch.url: "http:localhost:9200" //配置elasticsearch所在的IP和埠
server.port: 8888  //設定服務埠即視覺化頁面對映埠
server.host: "IP"   //設定服務IP

啟動測試

/elk/kibana/bin/kibana &

啟動完成沒有報錯後,在瀏覽器輸入IP:Ports,在配置檔案中配置的地址,
出現如下頁面為成功
在這裡插入圖片描述

配置Logstash

我們在專案中使用的是springboot自帶的logback,我們使用自定義的配置檔案
首先在logstash目錄中建立一個資料夾

mkdir /elk/logstash/webconfig

建立並編輯一個新配置檔案

vi /elk/logstash/webconfig/log_elk.conf

在配置檔案中新增
配置檔案詳細入門參考傳送門:https://www.cnblogs.com/moonlightL/p/7760512.html

input {
 # 我們建立了兩個微服務demo 所以建立兩個不同的輸入,將兩個服務的日誌分別輸入到不同的索引中
  tcp {
    mode => "server"
    host => "0.0.0.0"  # 允許任意主機發送日誌
    type => "elk1"      # 設定type以區分每個輸入源
    port => 4567      
    codec => json_lines    # 資料格式
  }
  tcp {
    mode => "server"
    host => "0.0.0.0"
    type => "elk2"
    port => 4667
    codec => json_lines
  }

}
filter {
  #Only matched data are send to output.
}
output {
  # For detail config for elasticsearch as output,
  # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html

  if [type] == "elk1" {
    elasticsearch {
      action => "index"          # 輸出時建立對映
      hosts  => "192.168.87.136:9200"   # ElasticSearch 的地址和埠
      index  => "elk1"         # 指定索引名
      codec  => "json"
     }
  }
  if [type] == "elk2" {
    elasticsearch {
      action => "index"          #The operation on ES
      hosts  => "192.168.87.136:9200"   #ElasticSearch host, can be array.
      index  => "elk2"         #The index to write data to.
      codec  => "json"
     }
  }
}

啟動Logstash

//-f後可以接指定的配置檔案,也可以是一個目錄,它會自動將目錄中的所有配置檔案一起匯入合成一個配置檔案,實現多配置檔案啟動

//單檔案:
/elk/logstash/bin/logstash -f /elk/logstash/wegconfig/log_elk.conf   &
//目錄:
/elk/logstash/bin/logstash -f /elk/logstash/wegconfig  &

Logstash啟動比較慢,最後啟動成功後顯示:
在這裡插入圖片描述

準備微服務

使用idea建立springboot專案,勾選web元件。
在resource資料夾下建立配置檔案logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!--配置logstash的ip和埠,在logstash配置檔案中-->
        <destination>localhost:4567</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

新建一個IndexController類

@RestController
public class IndexController {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @GetMapping("/index")
    public Object index() {
            logger.debug("======ELK2測試=======");
            logger.info("======ELK2測試=======");
            logger.warn("======ELK2測試=======");
            logger.error("======ELK2測試=======");

        return "success";
    }
}

在另一個微服務中也同理建立,只需要修改logback-spring.xml中的Logstash埠號,在Controller中日誌輸出的內容也可以做簡單區分。
最後啟動兩個微服務。

執行測試

  1. 依次啟動Elasticsearch,Kibana,Logstash和兩個微服務
  2. 開啟Kibana頁面
    在這裡插入圖片描述
    在這裡插入圖片描述
    頁面中已經有了我們配置的兩個索引,其中有11條日誌是在我們啟動微服務時springboot輸出的日誌,在有第一條日誌通過tcp傳送到Logstash,Logstash將它轉發到Elasticsearch時Elasticsearch自動為我們建立了索引。

接著我們在Kibana中新增該索引
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
兩個索引新增完成後
在這裡插入圖片描述
我們在瀏覽器中訪問兩個微服務的index地址後重新整理kibana頁面。
在這裡插入圖片描述

簡單的搭建到此就結束了