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

1 篇文章 0 订阅

1. 环境

Ubuntu18.04.4

服务版本服务器
elasticsearch7.1.1192.168.1.197
search7.1.1192.168.1.197
filebeat7.1.1192.168.1.197
elastichdlatest192.168.1.197
filebeat-27.1.1192.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搭建成功并可以正常使用!

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过docker compose可以一次性部署Elasticsearch、Filebeat和Kibana(EFK)。你需要使用以下镜像: - docker pull store/elastic/filebeat:7.6.2 - docker pull elasticsearch:7.6.2 - docker pull kibana:7.6.2 在docker compose文件中,你可以创建一个包含两个Elasticsearch节点的集群。其中一个节点(es01)监听本地主机的9200端口,另一个节点(es02)通过Docker网络与es01通信。为了保持数据的一致性,你可以将数据目录(data01和data02)挂载到Docker存储节点上。如果目录不存在,docker compose会在启动集群时自动创建它们(默认位置为/var/lib/docker/volumes/)。 在Filebeat和Kibana的配置中,你需要将Elasticsearch的主机地址改为集群中监听9200端口的es01节点。 以下是一个示例的docker compose文件部分内容(假设为filebeat.docker-compose.yml): ``` version: '3' services: elasticsearch: image: elasticsearch:7.6.2 ports: - 9200:9200 volumes: - data01:/path/to/data01 filebeat: image: store/elastic/filebeat:7.6.2 volumes: - /var/run/docker.sock:/var/run/docker.sock - /var/lib/docker/containers:/var/lib/docker/containers configs: - source: filebeat-config target: /usr/share/filebeat/filebeat.yml kibana: image: kibana:7.6.2 environment: - ELASTICSEARCH_HOSTS=es01:9200 ports: - 5601:5601 volumes: data01: configs: filebeat-config: file: ./filebeat.yml ``` 请注意,以上仅为示例,你可能需要根据实际情况进行调整。另外,为了解决一些常见问题,你可能需要确保正确设置了vm.max_map_count,并了解如何手动创建Kibana节点并加入集群。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值