栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Docker Desktop 搭建 ELK + FileBeat 采集日志

Docker Desktop 搭建 ELK + FileBeat 采集日志

目录

Docker Desktop安装
ELK + Filebeat安装(所有的坑都排完了)
实现效果

说在前面

Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。对于大部分开发者来说,方便了太多。注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!

es、kibana、logstash、filebeat版本均为7.4.2

1.docker desktop安装

Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows

下载安装包,一路next安装完成。正常创建账号并登陆即可。

如果提示下午图,点击图中链接下载wsl,下载后,正常安装就行。

安装完docker desktop,数据默认存储地址是c盘,c盘空间不足的同学可以如下处理

#1)首先关闭docker desktop
#2)关闭wsl
wsl --shutdown
#3)导出(注意,原有的docker images不会一起导出)
wsl --export docker-desktop-data F:docker-sharewsldocker-desktop-datadocker-desktop-data.tar
#4)注销 
wsl --unregister docker-desktop-data
#5)重新导入
wsl --import docker-desktop-data F:docker-sharewsldocker-desktop-data  F:docker-sharewsldocker-desktop-datadocker-desktop-data.tar --version 2

#F:docker-sharewsldocker-desktop-data 为指定的Docker新存储路径
#F:docker-sharewsldocker-desktop-datadocker-desktop-data.tar备份的地址

6)重新运行Docker Desktop

安装之后,可以打开 Windows PowerShell 并运行以下任一命令检测是否运行成功:

docker run hello-world
docker version

2.ELK + Filebeat安装

下载镜像

docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
docker pull logstash:7.4.2
docker pull elastic/filebeat:7.4.2

在安装过程中常用的命令

#进入容器
docker exec -it logstash bash
#使用root用户进入容器
docker exec -it --user=root logstash bash		
#使用docker-compose
docker-compose up -d
# 查询日志
docker logs --tail=100 logstash
docker-compose.yml
version: '2'
services:
  elasticsearch:
    image: elasticsearch:7.4.2
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch-cluster" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms128m -Xmx256m" #设置使用jvm内存大小
    volumes:
      # 看注释1
      - /f/docker_share/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
      - /f/docker_share/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
      - /f/docker_share/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml #数据文件挂载
    ports:
      - 9200:9200
    privileged: true
  kibana:
    image: kibana:7.4.2
    container_name: kibana
    links:
      - elasticsearch:elasticsearch #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://elasticsearch:9200" #设置访问elasticsearch的地址
      - I18N_LOCALE=zh-CN
    ports:
      - 5601:5601
    privileged: true
  logstash:
    image: logstash:7.4.2
    container_name: logstash
    depends_on:
      - elasticsearch 
    links:
      - elasticsearch:elasticsearch #可以用es这个域名访问elasticsearch服务
    ports:
      - 4560:4560
    privileged: true
    volumes:
      - /f/docker_share/logstash/conf/beat-test.conf:/usr/share/logstash/pipeline/logstash.conf #挂载logstash的配置文件
  filebeat:
    image: elastic/filebeat:7.4.2
    container_name: filebeat
    user: root
    privileged: true
    volumes:
      - /f/docker_share/filebeats/filebeat-7.4.2/data:/usr/share/filebeat/data
      - /f/docker_share/filebeats/logs:/usr/share/filebeat/logs
    depends_on:
      - elasticsearch
      - kibana
      - logstash
    links:
      - elasticsearch:elasticsearch #可以用es这个域名访问elasticsearch服务

文件相关配置:

注释1: 此处需要在F:/docker_share/elasticearch中下载ik分词器,https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip

elasticsearch.yml
cluster.name: elasticsearch-cluster #集群名
node.name: es-node1 #节点名
network.host: 0.0.0.0 #配置外网访问
discovery.zen.minimum_master_nodes: 1 #由于只有一个节点所以discovery.zen.minimum_master_nodes参数是1
network.publish_host: localhost
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true 
beat-test.conf
# 从filebeat中输入
input {
  beats {
       port => "5044"
  }
}
 
 
# 输出到es中
output {
 
    # 推荐下面这种写法,比较简洁
    elasticsearch {
    hosts => [ "172.18.0.2:9200"]
    # 刷新频率
    #flush_size => 1000
    #es中创建索引的名称(注意 index里面不能存在大写字符)
    index => "%{[fields][appname]}-%{+YYYY.MM.dd}"
    document_type => "log"
    }
    
}

说明
172.18.0.2为es容器的ip,进入es容器,ifconfig查看。如提示commond not found,则安装net-tools,命令: yum install net-tools -y

filebeat.conf

将以下内容覆盖到/usr/share/filebeat下的filebeat.yml

# 设置filebeat的输入为文件输入
filebeat.inputs:
# 这里可以配置多个path,采集不同应用服务的日志,然后在logstash中按照应用服务名为index保存到es中
- type: log
  enabled: true
  # 采集指定目录的日志(模拟采集第一个应用服务的日志)
  paths:
    - /usr/share/filebeat/logs/test-admin1-2021-12-16.log
  # 指定应用程序日志type,方便后面logstash在es中对不同的应用服务日志创建不同的索引
  fields:
    appname: /test-admin1
  # 将属性放到根下 比如 appname 属性,在其他地方访问直接 [appname] 即可访问,不开启的话需要 [fields][appname]才能访问
  #fields_under_root: true

- type: log
  enabled: true
  # 采集指定目录的日志(模拟采集第二个应用服务的日志)
  paths:
    - /usr/share/filebeat/logs/test-admin-2021-12-16.log
  # 指定应用程序日志type,方便后面logstash在es中对不同的应用服务日志创建不同的索引
  fields:
    appname: /test-admin
  #fields_under_root: true

 

# 指定索引的分区数
setup.template.settings:
  index.number_of_shards: 3

#指定logstash的配置,日志采集后输出到logstash中
output.logstash:
  hosts: ["172.18.0.4:5044"]
 

说明:path下的日志,是我本地应用的运行日志,然后挂载到了filebeat容器上的 /usr/share/filebeat/logs目录,以此方式来模拟线上应用的日志文件

效果


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号