ELK入门(八)——Logstash多beat配置(以Filebeat、Metricbeat为例)

本文介绍了使用ELK栈配置多种数据采集器的方法,包括通过多端口、添加tag及利用logstash.yml表达式实现不同beat的数据区分。适用于希望了解如何有效配置ELK收集多种类型日志数据的读者。

之前的文章中我们用Filebeat连接Logstash实现了到es的传输,但如果我们有多种采集器(beat)时,该如何配置呢。我尝试了几种方法

一、多端口(不推荐)

在之前文章中,我们的Filebeat和Logstash之间通过5044端口进行传输,如果想要不同的beat,可以开设不同的端口号,例如Filebeat为5044,Metricbeat为5043。

1.配置logstash

vim /etc/logstash/conf.d/logstash-sample.conf
input {
  beats {
    add_field => {"beatType" => "filebeat"}
    port => 5044
  }
  beats {
    add_field => {"beatType" => "metricbeat"}
    port => "5043"
  }
}

# 日志添加  remote_ip字段=>IP地址  来作为不同被监控服务器的标识
filter{
  mutate{
    add_field => {"remote_ip" => "%{[@metadata][ip_address]}"}
  }
}


output {
  if [beatType] == "filebeat" {
    elasticsearch {
      hosts => ["localhost:9200"]
      index => "filebeat-logstash-test"
    }
  }
  if [beatType] == "metricbeat" {
    elasticsearch {
      hosts => ["localhost:9200"]
      index => "metricbeat-logstash-test"
    }
  }
}

2.配置filebeat

vim /etc/filebeat/filebeat.yml

这个没有什么需要改变的,直接按原本的就好,如果没有配置过则回顾ELK入门(六)——Filebeat安装与启动(rpm包)+logstash(rpm包) 

3.配置metricbeat

在上一节中我们只尝试了metricbeat直接传到elasticsearch,所以这里要重新配置一下。

vim /etc/metricbeat/metricbeat.yml 

以下只列出调整过的内容

reload.enabled: true
setup.dashboards.enabled: true

 ②output中注释elasticsearch,启用logstash

4.重启

重启logstash和beats

systemctl restart logstash
systemctl restart filebeat
systemctl restart metricbeat

发现在head上已经显示出这两个索引了

这里filebeat读取的内容很少,是因为已经有了采集过的记录,想要从头开始导入可参见博客ELK入门——解决:删除索引,重运行logstach后messages数据量变少

二、加入tag,输出判断(少量时推荐)

多端口配置这是一种方法,不过当采用多种采集器的时候,难道要给每个采集器都分配一个端口么,这显然是不太合理的,配置过程也非常麻烦,可移植性低。因此还有另外一种方法,就是给每种beat在配置文件中分配好tag,用if [tag]=="" 来区分不同的采集器。

我们先删除方法一中生成的索引,然后同样的,需要对logstash和beat进行相关配置。

1.配置filebeat

vim /etc/filebeat/filebeat.yml
reload.enabled: true

setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression


tags: ["filebeat_messages"]

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

2.配置metricbeat

vim /etc/metricbeat/metricbeat.yml
reload.enabled: true

setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression


tags:["metricbeat_system"]

output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

3.配置logstash

vim /etc/logstash/conf.d/logstash-sample.conf
nput {
  beats {
    port => 5044
  }
}

output {
  if "filebeat_messages" in [tags] {
     elasticsearch {
        hosts => ["http://local:9200"]
        index => "filebeat_logstash_test"
     }
  }
  if "metricbeat_system" in [tags] {
       elasticsearch {
          hosts => ["http://localhost:9200"]
          index => "metricbeat_logstash_test"
       }
    }
  # elasticsearch {
  #   hosts => ["http://localhost:9200"]
  #   index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  # }
}

4.启动

systemctl restart logstash
systemctl restart filebeat
systemctl restart metricbeat

查看head,有索引成功生成

这两种方法掌握后更多的beat其实也是相类似的配置方法

三、logstash.yml表达式区分(推荐)

还有一种方法及其简单,我在后面的博客进行了应用,可以参见ELK入门(十)——Beats的多服务器/系统部署(以Metricbeat为例)并Kibana查看

只修改logstash.yml即可

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch  {
    hosts => ["172.31.131.224:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-test"
  }
}

通过这段语句,可以区分开不同beat的不同版本 

重运行logstash后会发现head生成索引了,因为此时我有三种采集器在采集,所以也生成了三个采集器的索引。

 

参考博客

安装部署ELK教程 (Elasticsearch+Kibana+Logstash+Filebeat+Metricbeat) 基于7.9.3版本

Logstash多beat数据源配置

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值