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

之前的文章中我们用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数据源配置

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值