引言

filebeat是轻量级的日志收集工具,本小节我们就开始filebeat组件的搭建。filebeat组件的搭建也是我们elk集群搭建过程中的最后一小节内容,本节除了有关于filebeat的搭建过程,我们也会完整的演示一个elk集群收集日志的示例,从而验证我们整个elk集群是否能够正常工作。开始正文。

正文

  • 拉取镜像

命令:docker pull elastic/filebeat:7.11.1

cenos搭建elk 搭建elk集群_docker

  • 启动filebeat临时镜像

说明:因为filebeat的配置文件修改需要权限,我们不能直接在容器中修改,所以我们就临时启动一个filebeat镜像服务,将我们的filebeat容器中的配置文件拷贝与我们的虚拟机,在虚拟机中授权修改配置文件,然后同步到我们的容器中。

命令:docker run -d --name=elk-cluster-filebeat elastic/filebeat:7.11.1

cenos搭建elk 搭建elk集群_kafka_02

  • 拷贝filebeat容器中的配置文件

(1)拷贝配置文件:docker cp elk-cluster-filebeat:/usr/share/filebeat /elk/

(2)授权:chmod 777 -R /elk/

(3)给filebeat的配置文件filebeat.yml授权

(4)创建一个atp目录,用于存放同步的日志文件

cenos搭建elk 搭建elk集群_kafka_03

  • vi修改filebeat.yml配置

说明:这里我们只需要配置一下我们收集的文件路径/usr/share/filebeat/atp/*.log和kafka集群的服务地址hosts: ["192.168.23.134:9091", "192.168.23.134:9092", "192.168.23.134:9093"]以及订阅的kafka主题atp。订阅主题我们在kafka集群搭建一节中已经创建,这里直接使用就ok了。

#数据输入配置 filebeat.inputs: - type: log enabled: true paths: - /usr/share/filebeat/atp/*.log filebeat.config: modules: path: ${path.config}/modules.d/*.yml reload.enabled: false processors: - add_cloud_metadata: ~ - add_docker_metadata: ~ #数据输出到kafka配置 output.kafka: # initial brokers for reading cluster metadata hosts: ["192.168.23.134:9091", "192.168.23.134:9092", "192.168.23.134:9093"] # message topic selection + partitioning topic: 'atp' partition.round_robin: reachable_only: false required_acks: 1 compression: gzip max_message_bytes: 1000000

cenos搭建elk 搭建elk集群_docker_04

  • 移除我们的临时filebeat容器

命令:docker rm -f elk-cluster-filebeat

cenos搭建elk 搭建elk集群_docker_05

  • 重新启动一个filebeat容器

命令:docker run -d --name=elk-cluster-filebeat --restart=always --user=root --privileged=true -v /elk/filebeat:/usr/share/filebeat elastic/filebeat:7.11.1

cenos搭建elk 搭建elk集群_cenos搭建elk_06

  • 通过查看启动日志确认filebeat服务是否已经正常启动

命令:docker logs elk-cluster-filebeat

cenos搭建elk 搭建elk集群_kafka_07

到这里,就证明我们的filebeat就正常搭建成功了,并可以收集数据到kafka集群中的atp主题中。

  • elk集群验证

修改我们logstash服务的配置文件,拉取kafka的主题消息。然后重启logstash服务。我们这里只以 elk-cluster-logstash-01容器的修改为例,其它的容器修改相同,这里不再介绍。

input{ #方式一:直接通过logback收集日志 tcp{ port => 5044 type => "atp" codec => "json_lines" } #方式二:kafka方式 kafka { type => 'kafka' bootstrap_servers => "192.168.23.134:9091,192.168.23.134:9092,192.168.23.134:9093" topics => "atp" group_id => "elk" } } output{ if [type] == 'atp'{ elasticsearch { #es地址 hosts => "192.168.23.134:9200" #索引 index => "elk-cluster-logstash-01-%{[app]}-%{+YYYY.MM.dd}" } } #kafka方式 if [type] == 'kafka'{ elasticsearch { #es地址 hosts => "192.168.23.134:9200" #索引 index => "elk-atp-%{+YYYY.MM.dd}" } } }

cenos搭建elk 搭建elk集群_docker_08

然后重启logstash集群的服务

cenos搭建elk 搭建elk集群_docker_09

我们将atp的日志上传一份到我们的filebeat的日志目录

cenos搭建elk 搭建elk集群_docker_10

查看es集群是否收集到日志:

cenos搭建elk 搭建elk集群_配置文件_11

cenos搭建elk 搭建elk集群_分布式_12

cenos搭建elk 搭建elk集群_docker_13

结语

ok,到这里我们的elk集群就搭建完成了,并对我们的集群收集日志工作流程进行了验证。好了,我们下期见。