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
回到第九步往下执行没有问题,配置成功!