前期准备

  1. 创建网络:
    docker network create -d bridge efk

  2. 目录结构:

    |—— filebeat/   // 根目录
    ****|—— config/
    ********|—— filebeat.yml   // filebeat 配置文件
    ****|—— project-a/    // 项目A日志目录
    ********|—— a.log
    ********|—— b.log
    ********|—— ...
    ****|—— project-b/    // 项目B日志目录
    ********|—— a.log
    ********|—— b.log
    ********|—— ...
    ****|—— project-c/    // 项目C日志目录
    ********|—— a.log
    ********|—— b.log
    ********|—— ...
    ****|—— docker-compose.yml  // docker-compose 配置文件
  3. filebeat/config/filebeat.yml:

     filebeat.inputs:
         -   type: log
             enabled: true
             paths:
                 - /var/project-a/*.log
             fields:
                 log_topics: "project-a"
         -   type: log
             enabled: true
             paths:
                 - /var/project-b/*.log
             fields:
                 log_topics: "project-b"
         -   type: log
             enabled: true
             paths:
                 - /var/project-c/*.log
             fields:
                 log_topics: "project-c"
    
     setup.template.settings:
         index.number_of_shards: 3
    
     setup.template.name: "filebeat*"
     setup.template.pattern: "filebeat*"
    
     output.elasticsearch:
         hosts: [ "elasticsearch643:9200" ]
         index: "project-other"
         indices:
             -   index: "project-a"
                 when.contains:
                     fields:
                         log_topics: "project-a"
             -   index: "project-b"
                 when.contains:
                     fields:
                         log_topics: "project-b"
  4. filebeat/docker-compose.yml:

     # 版本声明
     version: '3.5'
     services:
         # 构建后的容器名,容器之间通过该名称进行通信。例:ping go-container
         elasticsearch643:
             # 直接使用原镜像
             image: elasticsearch:6.4.3
             restart: on-failure
             # 端口映射
             ports:
                 - 9200:9200
                 - 9300:9300
             # 定义环境变量
             environment:
                 - ES_JAVA_OPTS=-Xms512m -Xmx512m
                 - discovery.type=single-node
         # 构建后的容器名,容器之间通过该名称进行通信。例:ping go-container
         kibana643:
             # 在 mysql-container 容器启动之后再启动
             depends_on:
                 - elasticsearch643
             # 直接使用原镜像
             image: kibana:6.4.3
             restart: on-failure
             # 端口映射
             ports:
                 - 5601:5601
             # 定义环境变量
             environment:
                 - ELASTICSEARCH_URL=http://elasticsearch643:9200
         # 构建后的容器名,容器之间通过该名称进行通信。例:ping mysql-container
         filebeat643:
             # 在 mysql-container 容器启动之后再启动
             depends_on:
                 - elasticsearch643
                 - kibana643
             # 直接使用原镜像
             image: job520/filebeat:6.4.3
             restart: on-failure
             # 挂载主机目录
             volumes:
                 - ./config/filebeat.yml:/myapp/filebeat.yml
                 - ./project-a:/var/project-a
                 - ./project-b:/var/project-b
                 - ./project-c:/var/project-c
     # 使用 docker network 创建的网络
     networks:
         default:
             external:
                 name: efk
  5. filebeat/project-{a,b,c}/{a,b,xxx}.log:
    内容随便写

原生 docker 用法

  1. 运行 elasticsearch:6.4.3

    docker run --name elasticsearch643 \
      --network efk \
      -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
      -e "discovery.type=single-node" \
      -p 9200:9200 \
      -p 9300:9300 \
      -d \
      elasticsearch:6.4.3
  2. 运行 kibana:6.4.3

    docker run --name kibana643 \
      --network efk \
      -e ELASTICSEARCH_URL=http://elasticsearch643:9200 \
      -p 5601:5601 \
      -d \
      kibana:6.4.3
  3. 运行 filebeat:6.4.3

    cd filebeat
    docker run --name filebeat643 \
      --network efk \
      -v $PWD/config/filebeat.yml:/myapp/filebeat.yml \
      -v $PWD/project-a:/var/project-a \
      -v $PWD/project-b:/var/project-b \
      -v $PWD/project-c:/var/project-c \
      -d \
      job520/filebeat:6.4.3

docker-compose 用法

  • 启动:
    cd filebeat
    docker-compose up -d

kibana 配置

  1. 访问地址:
    xx.xx.xx.xx:5601

  2. 添加索引:

添加索引1

添加索引2

添加索引3

  1. 添加自定义显示标题:

添加自定义显示标题

  1. 查看日志详细内容:

查看日志详细内容

文档更新时间: 2024-04-20 10:57   作者:lee