ELK+fileBeat搭建springboot日志系统 docker-compose方式

ELK+fileBeat搭建springboot日志系统 docker-compose方式

其中ELK的 docker-compose 方式搭建参考上篇文章

这里详细讲解fileBeat的搭建 docker-compose 方式,以docker容器名称为索引动态创建到ES,此方式收集的是所有docker容器的日志,和项目中配置的日志文件输出没多大关系,将自己都项目 A 和B 和C 等等,以容器化方式部署 即可 动态以部署的容器名称为索引创建收集至ES。(这里是 filebeat 输出到Logstash 再到ES)

具体的容器映射路径可自己根据实际情况而定,我这里只给出 docker-compose.yml 和 filebeat.yml 作为参考

1.创建都 docker-compose.yml 文件

version: '3'
services:
  filebeat:
    image: docker.elastic.co/beats/filebeat:6.6.2
    container_name: filebeat6.6.2
    user: "root"
    #restart: always
    volumes:
      - ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
      - ~/dockerdata/filebeat:/data
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/lib/docker/containers:/var/lib/docker/containers

一定要 user: “root” 加这个,不然启动报错权限不够

  1. 在 docker-compose.yml 同级目录下创建config文件夹,在config文件夹下创建 filebeat.yml 文件
filebeat.inputs:
- type: log
  paths:
   - '/var/lib/docker/containers/*/*.log'
  json.add_error_key: true
  json.overwrite_keys: true
  json.message_key: log
  processors:
    - add_docker_metadata:
        match_source: true
        match_source_index: 4
processors:
- rename:
    fields:
     - from: "json.log"
       to: "message"
     - from: "docker.container.name"
       to: "containername"
     - from: "log.file.path"
       to: "filepath"
output.logstash:
  hosts: ["192.168.181.128:4560"]

logstash的配置文件 logstash-springboot.conf

input {
  beats {
    port => 4560
  }
}


output {
  elasticsearch {
    hosts => "es:9200"
    manage_template => false
    index => "%{containername}-%{+YYYY.MM.dd}"
  }
}

配置文件的格式一定要严格检查,否则可能会报错。

你可能感兴趣的:(docker,elk,spring,boot)