天天看點

docker-compose部署ELK(可跟蹤多個日志檔案)

使用docker-compose部署ELK

docker下載下傳部署所需鏡像

kibana 7.5.0 docker pull kibana:7.5.0
elasticsearch 7.5.0 docker pull elasticsearch:7.5.0
logstash 7.5.0 docker pull logstash:7.5.0
elasticsearch-head:5 docker pull mobz/elasticsearch-head:5
filebeat 7.5.0  docker pull registry.cn-hongkong.aliyuncs.com/hyn-beats/filebeat:7.5.0
           

vim docker-compose.yml

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.5.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #設定叢集名稱為elasticsearch
      - "discovery.type=single-node" #以單一節點模式啟動
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #設定使用jvm記憶體大小
      - TZ=Asia/Shanghai
    volumes:
      - /work/elk/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件檔案挂載
      - /work/elk/elasticsearch/data:/usr/share/elasticsearch/data #資料檔案挂載
    ports:
      - 9200:9200
  kibana:
    image: kibana:7.5.0
    container_name: kibana
    links:
      - elasticsearch:elasticsearch #可以用elasticsearch這個域名通路elasticsearch服務
    depends_on:
      - elasticsearch #kibana在elasticsearch啟動之後再啟動
    environment:
      - "elasticsearch.hosts=http://elasticsearch:9200" #設定通路elasticsearch的位址
      - TZ=Asia/Shanghai
      - I18N_LOCALE=zh-CN
    ports:
      - 5601:5601
  logstash:
    image: logstash:7.5.0
    container_name: logstash
    volumes:
      - /work/elk/logstash/logstash-springboot.conf:/usr/share/logstash/pipeline/logstash.conf #挂載logstash的配置檔案
      - /work/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
    environment:
      - TZ=Asia/Shanghai #環境設定時區
    depends_on:
      - elasticsearch #kibana在elasticsearch啟動之後再啟動
    links:
      - elasticsearch:elasticsearch #可以用es這個域名通路elasticsearch服務
    ports:
      - 5044:5044
           

建立檔案夾

/work/elk/elasticsearch/data
/work/elk/elasticsearch/plugins
           

設定檔案夾權限

chmod -R 777 data
chmod -R 777 plugins
           

vim /work/elk/logstash/logstash-springboot.conf

## logtash.conf
input {
  beats {
    port => "5044"
    codec => "json"
  }
}


output {
  stdout { codec => rubydebug }
  elasticsearch {
        hosts => [ "{主機IP位址}:9200" ]
    }
}
           

vim /work/elk/logstash/logstash.yml

http.host: "0.0.0.0"
# es-head連接配接es可能是連不上的,是因為es沒有開啟跨域(不安裝es-head不需要增加下面的配置)
http.cors.enabled: true
http.cors.allow-origin: "*"
           

執行

docker-compose up -d
           

檢視結果

docker ps

docker-compose部署ELK(可跟蹤多個日志檔案)

編寫filebeat的docker-compose.yml

version: '3'
services:
  filebeat:
    image: store/elastic/filebeat:7.5.0 # 你下載下傳的鏡像的版本,
    container_name: filebeat
    restart: always
    volumes:
    # 對應你要映射的日志檔案    
    - /work/ggfw/pw/:/work/ggfw/pw/
    - /work/ggfw/cw/:/work/ggfw/cw/
    - /opt/nginx/logs/:/opt/nginx/logs/
    ........ # 可以配置多個
    # 下面的固定加的
    - /work/elk/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro
    - /var/lib/docker/containers:/var/lib/docker/containers:ro
    - /var/run/docker.sock:/var/run/docker.sock:ro
    network_mode: "host"  # 可加可不加,由于項目中用dubbo,消費者出現了filebeat的網絡ip
           

編寫filebeat本地配置

vim /work/elk/filebeat/filebeat.docker.yml

#filebeat.config:
filebeat.inputs:
- type: log
  enabled: true
  paths:
  - /work/ggfw/pw/app.log
  fields: 
    service: pw
  fields_under_root: true
- type: log
  enabled: true
  paths:
  - /work/ggfw/cw/app.log
  fields:
    service: cw
  fields_under_root: true
...... # 可以加多個日志檔案,如果一個檔案夾下有多個日志檔案,也可以使用*.log
   
#日志輸出配置(采用 logstash 收集日志,5044為logstash端口)
output.logstash:
  hosts: ['{IP位址}:5044']
           

執行

docker-compose up -d

以上,伺服器端配置完成,檢視kabana,通路:

http://{IP位址}:5601/
           

在索引管理裡就可以看到将所有指定的日志檔案對應的索引了。

docker-compose部署ELK(可跟蹤多個日志檔案)

一頓添加操作後,可以在Discover裡看到日志内容了。然後按照自己的想看的去篩選各個微服務的日志。可以進行儲存,友善下次打開。

docker-compose部署ELK(可跟蹤多個日志檔案)
docker-compose部署ELK(可跟蹤多個日志檔案)

繼續閱讀