docker 安装filebeat收集日志到es

发布时间丨2022-08-29 17:29:33作者丨zhaomeng浏览丨58


使用docker安装部署filebeat采集日志并发送给elasticsearch,为什么使用docker安装呢,原因在于win10上面安装 的没有成功,下载了安装包到win10解压后,配置都完成了但是运行winservice的时候却没有成功,导致只能cmd下,以命令行的方式运行,但是终究不是好的办法,于是就想到了使用万能的docker部署运行,查询资料,结合之前的部署配置,最终分享部署的过程如下:

第一步:确保docker已经安装完成

第二步:确保拉去的filebeat镜像和es的镜像版本一致我这里使用的都是7版本

第三步:拉去镜像如下:

docker pull elastic/filebeat:7.6.2

第四步:运行容器(作用是将容器的文件copy到本地一份,以便于对filebeat文件的.yml配置文件进行修改;如果对filebeat的docker路径熟悉,可以直接将本地的创建的.yml文件挂载到容器中.)

docker run -d --name=filebeat elastic/filebeat:7.6.2

第五步:拷贝容器文件及创建本地文件及提权限

本地/mnt/data/下创建filebeat文件夹,用来存放容器的filebeat的文件夹

# 创建文件夹
mkdir filebeat
#将filebeat 容器内的目录拷贝出来
docker cp filebeat:/usr/share/filebeat /mnt/data/filebeat/
#对拷贝出来的文件进行权限更改
chmod 777 -R /mnt/data/filebeat/
#将filebeat.yml的权限改为仅所有者可写入
chmod go-w /mnt/data/filebeat/filebeat/filebeat.yml

第六步编写配置文件

#编辑filebeat.yml
vi /mnt/data/filebeat/filebeat/filebeat.yml

将下面的配置文件的内容写入到filebeat.yml 具体输出到elasticsearch中;

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

processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~


#收集系统日志
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /home/scrapy_*.log

output.elasticsearch:
  output.elasticsearch:
  hosts: '192.168.1.110:9200'
  indices:
    - index: "filebeat-%{+yyyy.MM.dd}"

第七步删除上面创建的容器filebeat

#删除filebeat
docker rm -f filebeat

第八步:重新创建新的容器并挂在日志路径及配置文件

sudo docker run -d --name=filebeat  --restart=always -v /mnt/data/filebeat/filebeat/:/usr/share/filebeat/ -v /mnt/data/askquestion/log/:/home elastic/filebeat:7.6.2

参数解释如下:

-v /mnt/data/filebeat/filebeat/:/usr/share/filebeat/:将本地拷贝的f并修改了配置文件的filebeat文件夹挂载到容器的filebeat文件夹下

-v /mnt/data/askquestion/log/:/home:将本机的日志文件夹挂在到容器的/hom文件夹下,配置文件中的日志路径为容器中的/home/*.log

第九步:查看容器的日志,确保filebeat正常运行了

#需要等待三十秒再查看filebeat日志
docker logs -f filebeat 

如下图日志没有出现任何的错误及查看es索引文件正常显示

es文件信息如下图:

第二部分:win10安装filebeat

参考第一步到第四步

第五步权限的设置使用win10的属性设置不起作用,一定要使用linux环境的命令权限设置,win10报错如下:

这里的坑我是通过win10集成的子linux系统解决的,像打开powershell一样,在所属文件中shift+鼠标右键选择在此处打开linux shell,打开之后进入到第五步为创建的文件夹及文件设置权限:

设置创建的f盘的filebeatcfg文件夹(存放filebeat容器的拷贝的文件夹)及filebeat的配置文件filebeat.yml权限

运行容器并挂载win10的文件夹的日志及filebeat的文件夹到容器中:

docker run -d --name=filebeat  --restart=always -v F:\\filebeatcfg\\filebeat\\:/usr/share/filebeat/ -v E:\\scrapydlog\\logs\\:/home elastic/filebeat:7.6.2

参数解释:

-v F:\\filebeatcfg\\filebeat\\:/usr/share/filebeat/  :win10的filebeatcfg文件夹挂载到容器中

-v E:\\scrapydlog\\logs\\:/home  : win10的日志文件夹挂在到容器的/home文件夹下

filebeat.yml的配置文件中日志log路径为:/home/*/*/*.log

回到第九步往下执行没有问题,配置成功!

推荐文章:docker部署ELK日志监控