EFK日志收集系统搭建(docker-compose版)

1. 环境

Ubuntu18.04.4

服务 版本 服务器
elasticsearch 7.1.1 192.168.1.197
search 7.1.1 192.168.1.197
filebeat 7.1.1 192.168.1.197
elastichd latest 192.168.1.197
filebeat-2 7.1.1 192.168.1.196(另一台服务器,服务多实例,收集日志用)

2. 准备工作

2.1 创建文件夹

sudo mkdir -p /var/dlp/data/elk/data/filebeat
sudo mkdir -p /var/dlp/data/elk/data/elasticsearch
sudo mkdir -p /var/dlp/data/elk/filebeat
sudo mkdir -p /var/dlp/data/elk/conf

2.2 数据文件赋予读写权限

sudo chmod -R 777 /var/dlp/data/elk/data

2.3 docker-compose.yml

编辑文件

sudo vim /var/dlp/data/docker-compose.yml

docker-compose.yml内容

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1
    container_name: elk_elasticsearch7.1.1
    privileged: true
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    volumes:
      - /var/dlp/data/elk/data/elasticsearch:/usr/share/elasticsearch/data #这里将elasticsearch的数据文件映射本地,以保证下次如果删除了容器还有数据
    hostname: elasticsearch
    restart: always
    networks:
      - esnet
    ports:
      - 9200:9200
      - 9300:9300

  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.1
    container_name: elk_kibana7.1.1
    privileged: true
    environment:
      - elasticsearch.hosts=http://192.168.1.197:9200
    hostname: elk_kibana
    depends_on:
      - elasticsearch
    volumes:
      - /var/dlp/data/elk/conf/kibana.yml:/usr/share/kibana/config/kibana.yml
    restart: always
    networks:
      - esnet
    depends_on:
      - "elasticsearch"
    ports:
      - "5601:5601"

  filebeat:
    image: docker.elastic.co/beats/filebeat:7.1.1
    container_name: elk_filebeat
    volumes:
      - /var/dlp/data/elk/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/dlp/data/elk/data/filebeat:/usr/share/filebeat/data
      - /var/dlp/logs/bms:/usr/share/filebeat/logs/bms  # 需要收集的文件路径
    networks:
      - esnet
    depends_on:
      - "elasticsearch"
      - "kibana"

  eshead:
    image: containerize/elastichd:latest
    container_name: elk_eshead
    networks:
      - esnet
    ports:
      - 9800:9800
    depends_on:
      - "elasticsearch"


networks:
  esnet:
    driver: bridge

2.3.1 配置中映射详情

elasticsearch数据路径 /var/dlp/data/elk/data/elasticsearch
filebeat数据路径 /var/dlp/data/elk/data/filebeat
收集的日志文件路径 /var/dlp/logs/bms
kibana配置文件 /var/dlp/data/elk/conf/kibana.yml
filebeat配置文件 /var/dlp/data/elk/conf/filebeat.yml

2.4 kibana.yml

sudo vim /var/dlp/data/elk/conf/kibana.yml

server.host: "0.0.0.0"
server.port: 5601
server.name: kibana
elasticsearch.hosts: [ "http://192.168.1.197:9200" ]  # 此处为es的master地址
i18n.locale: zh-CN #中文
xpack:
  monitoring.ui.container.elasticsearch.enabled: true
  apm.ui.enabled: false
  graph.enabled: false
  ml.enabled: false
  monitoring.enabled: false
  reporting.enabled: false
  security.enabled: false
  grokdebugger.enabled: false
  searchprofiler.enabled: false

2.5 Filebeat配置文件

sudo vim /var/dlp/data/elk/conf/filebeat.yml

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false


processors:
- add_cloud_metadata: ~


filebeat.inputs:
- type: log
  enabled: true
  paths:
    /usr/share/filebeat/logs/bms/dlp-bms-service.log
  # exclude_lines: ["^DBG"]  # 在输入中排除符合正则表达式列表的那些行。
  tags: ["bms"]
  multiline.pattern: ^\d+\-\d+\-\d+ #日志开头以“数字-数字-数字”的格式开头,不是以此开头的日志计算上一行日志
  multiline.negate: true
  multiline.match: after

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true

output.elasticsearch:
  hosts: ["192.168.1.197:9200"] # IP为elasticsearchIP
  indices:
    - index: "bms197-%{+yyyy.MM.dd}" # bms197为了多实例区分
      when.contains:
        tags: "bms"  

2.6 启动停止命令

# 启动
docker-compose up -d
# 停止
docker-compose down

2.7 filebeat收集另外一台服务器日志

环境:IP:192.168.1.196

2.7.1 创建文件夹

sudo mkdir -p /var/dlp/data/elk/data/filebeat
sudo mkdir -p /var/dlp/data/elk/filebeat
sudo mkdir -p /var/dlp/data/elk/conf

数据文件赋予读写权限

sudo chmod -R 777 /var/dlp/data/elk/data

2.7.2 编辑docker-compose文件

sudo vim /var/dlp/data/elk/filebeat/docker-compose.yml

version: '3'
services:
  filebeat:
    image: docker.elastic.co/beats/filebeat:7.1.1
    container_name: elk_filebeat
    volumes:
      - /var/dlp/data/elk/conf/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /var/dlp/data/elk/data/filebeat:/usr/share/filebeat/data
      - /var/dlp/logs/bms:/usr/share/filebeat/logs/bms   # bms

注意
有两处配置跟上面不同
output.elasticsearch的hosts写es服务器地址
index写bms196,做区分

2.7.3 编辑filebeat.yml配置文件

sudo vim /var/dlp/data/elk/conf/filebeat.yml

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false


processors:
- add_cloud_metadata: ~


filebeat.inputs:
- type: log
  enabled: true
  paths:
    /usr/share/filebeat/logs/bms/dlp-bms-service.log
  # exclude_lines: ["^DBG"]  # 在输入中排除符合正则表达式列表的那些行。
  tags: ["bms"]
  multiline.pattern: ^\d+\-\d+\-\d+ #日志开头以“数字-数字-数字”的格式开头,不是以此开头的日志计算上一行日志
  multiline.negate: true
  multiline.match: after

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: true

output.elasticsearch:
  hosts: ["192.168.1.197:9200"] # IP为elasticsearchIP
  indices:
    - index: "bms196-%{+yyyy.MM.dd}" # bms196为了多实例区分
      when.contains:
        tags: "bms" 

2.7.4 命令

启动filebeat

docker-compose up -d

停止filebeat

docker-compose down

3. 页面验证

3.1 ElisticHD管理页面

http://192.168.1.197:9800/

填入es的地址和端口,点击connet
在这里插入图片描述
点击连接后,状态变成Yellow,证明es启动了,下面是界面
在这里插入图片描述

3.2 Kibana管理页面

http://192.168.1.197:5601/

3.2.1 创建索引模式

进入创建页面
在这里插入图片描述
定义索引模式
在这里插入图片描述
默认配置,点创建索引模式
在这里插入图片描述
索引模式创建成功
在这里插入图片描述

3.2.2 Kinaba页面按照日志关键字检索

在这里插入图片描述
至此,EFL搭建成功并可以正常使用!

手写不易,有用请点赞!!!

猜你喜欢

转载自blog.csdn.net/weixin_42170236/article/details/112372926