elk中filebeat的使用

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

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的博客-优快云博客

Docker ELK是指使用Docker容器化技术搭建的ELK(Elasticsearch、Logstash和Kibana)日志分析平台。其中,FilebeatELK中的一个组件,用于收集和传输日志数据。 在使用Docker ELK搭建平台时,你可以通过执行命令"Docker run"来启动Filebeat容器。启动命令示例如下: ``` docker run -d -u root --name filebeat --net somenetwork -v /var/log/logapp:/var/log/logapp:rw -v /mydata/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro elastic/filebeat:7.16.1 ``` 这个命令会在Docker中启动一个名为"filebeat"的容器,并将日志文件夹和配置文件夹挂载到容器中。 如果需要启动多个Filebeat容器,只需要指定不同的外挂地址即可,这样可以保持架构图的一致性。示例命令如下: ``` docker run -d --network elk-net --ip 172.22.1.5 --name=filebeat -v /mydata/filebeat/log/:/usr/share/filebeat/logs -v /mydata/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml docker.elastic.co/beats/filebeat:7.4.2 ``` 这个命令会在Docker中启动一个名为"filebeat"的容器,并将日志文件夹和配置文件夹挂载到容器中。 要导入日志进行测试,你可以创建一个Filebeat配置文件filebeat.yml。可以使用以下命令创建配置文件: ``` touch /mydata/filebeat/config/filebeat.yml ``` 这个命令会在指定路径下创建一个名为filebeat.yml的配置文件。然后,你可以根据需要进行相应的配置,包括指定日志路径、过滤条件等。 综上所述,Docker ELK中的Filebeat是用于收集和传输日志数据的组件,在搭建平台时需要执行相应的启动命令,并可以通过创建配置文件来进行必要的配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker安装elk + filebeat(版本:7.16.1)](https://blog.csdn.net/paidaxinga_/article/details/122210062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker搭建elk+filebeat](https://blog.csdn.net/qq_31745863/article/details/129986232)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值