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   根據操作系統選擇文檔

這裏選擇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

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章