docker搭建elk+filebeat

0. 架构

版本号:

  • ElasticSearch -7.4.2
  • Kibana - 7.4.2
  • logstash - 7.4.2
  • filebeat - 7.4.2

image-20230406113505447

如果后续日志数据海量也可以加上缓存redis或者消息队列进行升级

前言:

  • 需要先自定义一个docker网络,来使elasticsearch和logstash的ip地址固定,不然的话docker重启后可能会导致ip变动出现的问题
  • 自定义网络后在docker run 时指定自己想要的自定义ip,不让docker自动给你分配

1. docker创建自定义网络

章节一只是创建网络,如果要使用该网络是在docker run时指定的,后续章节会docker run是注意指定ip即可

#查看docker的网络
docker network ls
#创建一个网段在172.22.1.x 和网关为172.22.1.1的桥接类型网络名叫elk-net
docker network create --driver bridge --subnet 172.22.1.0/24 --gateway 172.22.1.1 elk-net
#查看docker网络,网络是否创建成功
docker network ls

image-20230412175156554

2. docker创建ElasticSearch实例

同时指定elasticsearch容器内网ip为172.22.1.2

#先将es的数据与配置与需要映射的文件夹创建好
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
#配置es地址
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
#保证权限
chmod -R 777 /mydata/elasticsearch/ 
#创建并启动实例
docker run --name elasticsearch \
--network elk-net --ip 172.22.1.2 \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
#查看容器的ip是否是我们自己分配的ip,例如下查看容器名称为elasticsearch的ip(容器起来后才能看到)
docker inspect elasticsearch  |grep IPAddress

image-20230412175543665

测试是否搭建成功:http://127.0.0.1:9200/

image-20230404104902375

3. 创建Kibana实例

同时指定elasticsearch容器内网ip为172.22.1.3

#不能使用公网ip,使用内网es分配的ip启动kibana ,以下命令查看elasticsearch内网ip为172.22.1.2
docker inspect elasticsearch  |grep IPAddress
#注意配置自己的IP地址
docker run --network elk-net --ip 172.22.1.3 \
--name kibana -e ELASTICSEARCH_HOSTS=http://172.22.1.2:9200 -p 5601:5601  -d kibana:7.4.2

测试是否搭建成功:http://127.0.0.1:5601/

image-20230404110450572

4. 创建logstash

mkdir -p /mydata/logstash/config
chmod -777 /mydata/logstash

创建logstash.yml

#创建logstash.yml配置文件
vim /mydata/logstash/config/logstash.yml
#文件内容如下:
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://172.22.1.2:9200" ]

创建logstash.config

#创建logstash.config配置文件
vim /mydata/logstash/config/logstash.config
#文件内容如下:
# 从filebeat中输入
input {
  beats {
       port => "5044"
  }
}
 
 
# 输出到es中
output {
    # 推荐下面这种写法,比较简洁
    elasticsearch {
    hosts => [ "172.22.1.2:9200"]
    # 刷新频率
    #flush_size => 1000
    #es中创建索引的名称(注意 index里面不能存在大写字符)
    index => "%{[fields][appname]}-%{+YYYY.MM.dd}"
    document_type => "log"
    }
}

启动logstash

同时指定logstash容器内网ip为172.22.1.4

docker run --network elk-net --ip 172.22.1.4 \
-p 5044:5044 -p 4560:4560 -d --name logstash \
-v /mydata/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf:rw \
-v /mydata/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:rw \
logstash:7.4.2

5. 创建filebeat

创建外挂目录

mkdir -p /mydata/filebeat/data
mkdir -p /mydata/filebeat/config
mkdir -p /mydata/filebeat/log
chmod 777 /mydata/filebeat/

查询logstash内网地址

#不能使用公网ip,使用内网es分配的ip启动kibana ,以下命令查看logstash内网ip为172.22.1.4
docker inspect logstash  |grep IPAddress

创建filebeat.yml配置文件

touch /mydata/filebeat/config/filebeat.yml

filebeat.yml内容:

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

- type: log
  enabled: true
  # 采集指定目录的日志(模拟采集第二个应用服务的日志)
  paths:
    - /mydata/filebeat/log/*.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.22.1.4:5044"]

注意/mydata/filebeat/log/*.log是我们容器内部的日子扫描路径,如果是使用docker的话需要外挂该目录不然filebeat扫描不到日志

启动filebeat:外挂日志目录和配置文件

同时指定filebeat容器内网ip为172.22.1.5

filebeat有需要的话可以多启动几个,只需要指定不同的外挂地址即可,就和架构图一致了

docker run -d \
--network elk-net --ip 172.22.1.5 \
--name=filebeat \
-v /mydata/filebeat/log/:/usr/share/filebeat/logs \
-v /mydata/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml \
docker.elastic.co/beats/filebeat:7.4.2

6. 导入日志进行测试

我将日志导入到我安装docker的机器上模拟日志输出

image-20230406114357933

此时filebeat是会检测到的,会输出一下日志

image-20230406114456004

然后我们上Kibana发现有日志导入es成功

image-20230406112104378

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker ELK是指使用Docker容器化技术搭建ELK(Elasticsearch、Logstash和Kibana)日志分析平台。其中,FilebeatELK中的一个组件,用于收集和传输日志数据。 在使用Docker ELK搭建平台时,你可以通过执行命令"Docker run"来启动Filebeat容器。启动命令示例如下: ``` docker run -d -u root --name filebeat --net somenetwork -v /var/log/logapp:/var/log/logapp:rw -v /mydata/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro elastic/filebeat:7.16.1 ``` 这个命令会在Docker中启动一个名为"filebeat"的容器,并将日志文件夹和配置文件夹挂载到容器中。 如果需要启动多个Filebeat容器,只需要指定不同的外挂地址即可,这样可以保持架构图的一致性。示例命令如下: ``` docker run -d --network elk-net --ip 172.22.1.5 --name=filebeat -v /mydata/filebeat/log/:/usr/share/filebeat/logs -v /mydata/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml docker.elastic.co/beats/filebeat:7.4.2 ``` 这个命令会在Docker中启动一个名为"filebeat"的容器,并将日志文件夹和配置文件夹挂载到容器中。 要导入日志进行测试,你可以创建一个Filebeat配置文件filebeat.yml。可以使用以下命令创建配置文件: ``` touch /mydata/filebeat/config/filebeat.yml ``` 这个命令会在指定路径下创建一个名为filebeat.yml的配置文件。然后,你可以根据需要进行相应的配置,包括指定日志路径、过滤条件等。 综上所述,Docker ELK中的Filebeat是用于收集和传输日志数据的组件,在搭建平台时需要执行相应的启动命令,并可以通过创建配置文件来进行必要的配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker安装elk + filebeat(版本:7.16.1)](https://blog.csdn.net/paidaxinga_/article/details/122210062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker搭建elk+filebeat](https://blog.csdn.net/qq_31745863/article/details/129986232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值