1、拉取filebeat镜像
docker pull elastic/filebeat:7.5.1
2、先随便启动一个filebeat容器
docker run -d --name=filebeat elastic/filebeat:7.5.1
3、把容器里的配置文件拷贝出来以便于修改
docker cp filebeat:/usr/share/filebeat .
4、chmod 777 -R ./filebeat
5、chmod go-w ./filebeat/filebeat.yml
6、编辑filebeat.yml
vim filebeat/filebeat.yml
7、编辑内容如下:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/lib/docker/containers/*/*.log
multiline:
pattern: '^\['
negate: true
match: after
max_lines: 500
timeout: 5s
fields:
logtopic: log-docker-containers
- type: log
enabled: true
paths:
- /root/docker/collector/logs/app-*.log
multiline:
pattern: '^\['
negate: true
match: after
max_lines: 500
timeout: 2s
fields:
logtopic: log-collector
output.kafka:
enabled: true
hosts: ['47.104.29.208:9092']
topic: '%{[fields.logtopic]}'
8、以上配置的说明:
/var/lib/docker/containers/*/*.log是所有docker容器的日志(配置的是docker容器里的目录)
/root/docker/collector/logs/app-*.log是某个应用服务的输出日志(配置的是docker容器里的目录)(如果应用服务部署在docker容器里,可以挂载到宿主机的/root/docker/collector/logs目录下)
log-docker-containers是提前创建好的kafka topic
log-collector是提前创建好的kafka topic
9、把原来随便创建的filebeat容器删除
docker rm -f filebeat
10、运行docker容器
docker run --restart=always --name filebeat --user=root -d -v /var/lib/docker/containers/:/var/lib/docker/containers/ -v /root/docker/collector/logs/:/root/docker/collector/logs/ -v /root/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml elastic/filebeat:7.5.1
11、运行参数说明如下:
/var/lib/docker/containers/是宿主机上的各个容器日志目录
/root/docker/collector/logs/是宿主机上的某个应用服务的日志输出目录
12、操作完成。如果日志文件发生变化,kafka topic里就有日志消息了。可以通过kafka消费者进行消费测试。