docker部署filebeat收集日志并输出到kafka

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消费者进行消费测试。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值