天天看點

ElasticStack搭建Java日志收集分析,并将其建構docker鏡像-學習筆記

參考視訊(ElasticStack)https://www.bilibili.com/video/av53652729

                 (Docker)           https://www.bilibili.com/video/av27122140

Docker官網   docker.com

ElasticStack官網 elastic.co  -- 有中文

整套跑下來大概需要使用2G以上記憶體,記憶體不足的伺服器不用試了

整套部署下來需要很清晰的思路,否則極易失敗,建議把ElasticStack了解一遍再開始

整個過程為

    Filebeat 收集檔案  --解析并傳輸給 -- Logstash --解析并傳輸給 -- Elasticsearch 建立完整檔案模式 -- Kibana關聯展示 

所需安裝包

    JDK1.8+  Filebeat7.5.1 + Logstash7.5.1 + ElasticStack7.5.1 + Kibana7.5.1

ElasticStack各元件需要版本統一

首先下載下傳安裝Docker.如果不使用docker記得給elasticsearch建立使用者後,将建立使用者禁止登陸伺服器ssh

Docker 安裝文檔位址 https://docs.docker.com   根據作業系統選擇文檔

ElasticStack搭建Java日志收集分析,并将其建構docker鏡像-學習筆記

這裡選擇Linux-Centos,需要先删除已安裝Docker,未安裝則忽略,删除時可以使用以下指令,按步驟安裝即可

apt-get remove docker*
           

 Docker安裝好後最好配置一下鏡像加速不然很多東西下不動,注冊登入阿裡雲,搜尋容器鏡像服務-鏡像加速器,裡面有詳細介紹

正常下載下傳方法估計一天也下載下傳不完,在Linux中使用指令下載下傳稍快一些

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-linux-x86_64.tar.gz

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.1.tar.gz

wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz
           

Docker準備工作,主控端上安裝JDK  上面4個gz安裝包,提前編寫好的元件配置檔案,安裝好再改也行,将這些東西放在同一檔案夾

建構鏡像   下面為Dockerfile 檔案内容

FROM ubuntu

MAINTAINER author
EXPOSE 5601

ENV MYPATH=/usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_191
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
ENV JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
ENV PATH=$PATH:${JAVA_PATH}

WORKDIR $MYPATH
ADD *.gz $MYPATH
COPY ./conf/* $MYPATH

CMD /bin/bash
           

 docker create | docker run 都可以 末尾接上面建構好的鏡像名:版本号,最少映射JDK安裝路徑與目标日志路徑

docker run -it --name mydocker -p 5601:5601 -p 9200:9200 -v /var/local/logs/docker/:/var/local/logs/ -v /usr/local/environment/jdk1.8.0_191/:/usr/local/jdk1.8.0_191/ myesimg:1.0.0
           

 一切順利的情況下會進入容器/usr/local目錄下

Docker容器為最低配linux系統,是以如果需要vi或者其他功能需要安裝

下面開始 ElasticStack部分

順序最好是 Elasticsearch -> Kibana -> Logstash -> Filebeat  (此為元件啟動順序)

Elasticsearch 

進入ES的目錄,修改配置檔案,一般單機版而且不需要外圍通路的時候不需要修改配置檔案

少數改動為cluster.name-node.name-discovery.seed_hosts-cluster.initial_master_nodes  将這些注釋放開

啟動ES,ES嚴格控制啟動的使用者,不允許root使用者使用,低版本可以加參數 -Des.insecure.allow.root=true 啟動,

(Kibana啟動會使用--allow-root)這個參數不知道在ES啟動時是否有用

建立使用者群組   将ES整個檔案夾權限更新為新使用者  使用新使用者啟動   ./elasticsearch -d 

啟動完成 使用curl localhost:9200檢視是否成功

Kibana

Kibana配置檔案修改 

                server.port: 5601    server.host: "0.0.0.0"  -表示本機  

                elasticsearch.hosts: ["http://localhost:9200"]   --關聯ES

啟動   nohup ./kibana --allow-root &     啟動完成後在浏覽器中通路5601端口檢視是否正常

Logstash (重點)

建立java-logstash.conf

input {
  beats {
    port => 5044
  }
}

filter {
 # 此處會自動按比對規則解析message,當然需要符合日志檔案的規範以下為 "a : b c d"
  grok { 
    match => { "message" => "%{GREEDYDATA:Timestamp}\ : %{WORD:LogLevel}\ %{GREEDYDATA:ClassName}\ %{GREEDYDATA:TextInformation}" }
  }
  date {
    match => [ "Timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ]
  }
}

output {
#根據filebeat傳輸過來的資料分索引 傳遞給Elasticsearch
  if [log_source] == "aaa" {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "java-aaa-%{+YYYY.MM.dd}"
    }
  }
  if [log_source] == "bbb" {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      index => "java-bbb-%{+YYYY.MM.dd}"
    }
  }
}
           

啟動: nohup ./filebeat -f java-logstash.conf --config.reload.automatic &

Filebeat  (重點)

編輯filebeat.yml 

filebeat.inputs:
- type: log
  enable: true
  paths:
   - /var/local/logs/aaa/*.log
  fields:
    log_source: aaa   #自定義字段用于logstash區分來源建索引
  fields_under_root: true
  multiline:       # 将非日期開頭的日志向上合并為一條message
    pattern: '^(\d{4}-\d{2}-\d{2})'
    negate: true
    match: after
    max_lines: 500
    timeout: 5s

- type: log
  enable: true
  paths:
   - /var/local/logs/bbb/*.log
  fields:
    log_source: bbb
  fields_under_root: true
  multiline:
    pattern: '^(\d{4}-\d{2}-\d{2})'
    negate: true
    match: after
    max_lines: 500
    timeout: 5s

output.logstash:
  hosts: ["127.0.0.1:5044"]
           

啟動: nohup ./filebeat -e -c ../filebeat.yml &

可以适當調整elasticsearch以及logstash的   jvm.options中的Xms/Xmx屬性調整記憶體值

最後通路kibana

ElasticStack搭建Java日志收集分析,并将其建構docker鏡像-學習筆記

 剩下的就是docker commit  && docker push了,以後使用的話隻需在倉庫中pull docker 鏡像,進入鏡像啟動相關元件就可以使用了,也可以從上面鏡像為模闆再添加RUN 保留字 重新build一個鏡像,這樣就不需要進入鏡像一個一個啟動了

繼續閱讀