elk中filebeat的使用

Filebeat是一个轻量级的日志收集工具,常用于实时监控和传输主机日志到Elasticsearch、Logstash等。在大规模日志处理中,它会结合消息队列如Kafka以防止日志丢失。文章详细介绍了如何配置Filebeat将日志发送到Elasticsearch,包括设置日志路径、索引模板和输出配置。此外,还展示了Filebeat向Logstash和Kafka输出日志的配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

Filebeat是一个轻量级的开源日志数据收集器,用于将日志和文件数据从不同的来源发送到各种目的地,如Elasticsearch、Logstash和Kafka等。它是Elastic Stack(之前称为ELK Stack)的一部分,用于实时数据传输和集中式日志管理,Filebeat的主要作用是实时监控指定的日志文件或位置,以及持续不断地将新数据发送到目标位置。它可以解析各种格式的日志数据,并将其转发到配置的输出目标

在标准架构中,filebeat通常用来部署在每个需要收集日志的主机上,收集主机中的日志,然后统一发送到logstash中但在日志量大的架构中,需要加入消息队列,可以有效避免日志的丢失和避免日志量的暴涨导致logstash崩溃

2.filebeat的使用

filebeat收集日志输出到elasticsearch

vi /opt/filebeat/filebeat/filebeat.yml

filebeat.inputs:
- type: log    #定义类型为log
  enabled: true     #启用该配置
  paths:           #日志的路径配置
     - /var/log/nginx/access.log
  fields:
      log_type: nginx_access       #自定义名称,在有多个日志路径的情况下,可以将日志通过自定义的名称字段区分开来,分别输入不同的elasticsearch索引中,后面kafka也会用到
  tail_files: true
  json.keys_under_root: true       #输入的日志为json格式时需要配置本项与下一项参数
  json.overwrite_keys: true        
# ======================= Elasticsearch template setting =======================
setup.template.settings:
  index.number_of_shards: 1         #配置elasticsearch主分片数量,但是配置了好像无效,还是默认的一个主分片
setup.template.name: "nginx"        #这个配置项用于设置 Elasticsearch index template(索引模板) 的名称,这里设置为nginx
setup.template.pattern: "nginx-*"    #这个配置项用于设置 Elasticsearch index pattern(索引模式),这里设置为 "nginx-*",表示所有以 "nginx-" 开头的 index 都会使用这个 template
setup.template.overwrite: false      #这个配置项用于设置是否覆盖已经存在的 template。这里设置为 false,表示如果已经存在同名的 template,则不会被覆盖
setup.template.json.enabled: true    #这个配置项用于设置是否启用 JSON 格式的 template。这里设置为 true,表示使用 JSON 格式的 template
setup.template.enabled: false        #这个配置项用于设置是否启用 Elasticsearch index template。这里设置为 false,表示不使用 Elasticsearch index template(索引模板)
setup.ilm.enabled: false            #这个配置项用于设置是否启用 Index Lifecycle Management(ILM)。这里设置为 false,表示不使用 ILM
# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  hosts: ["10.1.60.114:9200","10.1.60.115:9200","10.1.60.118:9200"]  #配置elasticsearch地址
  index: "%{[fields.log_type]}-%{+yyyy.MM.dd}"    #配置elasticsearch索引名称,此处使用了自定义的名称变量和时间变量作为索引名称,这样就能实现再有多个不同日志的情况下,自动创建多个不同的索引,还能根据时间自动切割每日的日志,关于多个日志的配置,下面kafka配置会展示

filebeat收集日志输出到logstash

vi /opt/filebeat/filebeat/filebeat.yml

filebeat.inputs:   #此处配置,收集了两个不同的日志
- type: log
  enabled: true
  paths:
     - /var/log/nginx/access.log
  fields:
      log_type: nginx-access-log       #自定义名称,在有多个日志路径的情况下,可以将日志通过自定义的名称字段区分开来,分别输入不同的elasticsearch索引中,后面kafka也会用到
  tail_files: true
- type: log
  enabled: true
  paths:
     - /var/log/nginx/error.log
  fields:
      log_type: nginx-error-log      #自定义名称,在有多个日志路径的情况下,可以将日志通过自定义的名称字段区分开来,分别输入不同的elasticsearch索引中,后面kafka也会用到
  tail_files: true

# ------------------------------ Logstash Output -------------------------------
output.logstash:
  hosts: ["10.1.60.115:5044"]    #配置logstash地址,此端口需要根据logstash配置的填写

 logstash配置可以参考:logstash收集日志到elasticsearch_Apex Predator的博客-优快云博客

filebeat收集日志输出到kafka

vi /opt/filebeat/filebeat/filebeat.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
     - /var/log/nginx/access.log
  fields:
      log_type: nginx-access-log       #自定义名称,在有多个日志路径的情况下,可以将日志通过自定义的名称字段区分开来,分别输入不同的elasticsearch索引中,后面kafka也会用到
  tail_files: true
- type: log
  enabled: true
  paths:
     - /var/log/nginx/error.log
  fields:
      log_type: nginx-error-log      #自定义名称,在有多个日志路径的情况下,可以将日志通过自定义的名称字段区分开来,分别输入不同的elasticsearch索引中,后面kafka也会用到
  tail_files: true

# ------------------------------ kafka Output -------------------------------
#filebeat配置文件里默认是没有kafka的配置的,需要自己添加
output.kafka:
  enabled: true    #开启output到kafka
  hosts: ["10.1.60.112:9092","10.1.60.114:9092","10.1.60.115:9092"]  #配置kafka集群地址和端口
  topic: '%{[fields][topic]}'    #主题名称,通过以上自定义的字段变量分别自动写入对应的消息队列中,若是没有创建好的队列,则会自动创建,但是创建的队列只有一个分区且没有副本,建议提前根据名称在kafka创建好分区

后续的调用参考logstash:logstash收集日志到elasticsearch_Apex Predator的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值