0

我正在使用 filebeat,我还想介绍 metricbeat。Filebeat 输出在 logstash-* 中编入索引,但是我需要一个不同的索引,其中仅包含来自 metricbeat 的数据(例如 metricbeat-test-%{+YYYY.MM.dd} )这些将在单个服务器上一起运行。

如何指示 logstash 为 logstash-* 中的 filebeat 内容编制索引,如果是 metricbeat 继续使用另一个索引?

我或多或少需要一个 IF 语句,但是我不确定我应该在其中包含什么!

我的 logstash 配置如下所示:

输出 { elasticsearch { hosts => "10.0.0.5:9200" manage_template => "true" index => "logstash-test-%{+YYYY.MM.dd}" document_type => "apache" } }

4

1 回答 1

2

当任何 Beat 向 Logstash 发送数据时,它会将目标索引添加到该[@metadata][beat]字段。默认情况下,Beat 会将此值设置为其自己的名称(例如 filebeat)。如果您想自定义该值,您可以设置output.logstash.index配置选项。

要利用来自 Beats 的所有事件中存在的元数据,您必须在 Logstash 中配置 elasticsearch 输出,如下所示:

output {
  if [@metadata][beat] {
    elasticsearch {
      hosts => "localhost:9200"
      manage_template => false
      index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }   
  }   
}

这是来自Beats 文档中关于如何将它们与 Logstash 一起使用的信息。我添加了条件,以便此输出仅用于您的 Beats 数据。您将为通过管道的其他数据配置另一个弹性搜索输出。

最后,因为您使用的是filebeat-*metricbeat-*索引,您必须手动安装提供的索引模板。每个 Beat 的下载包中都有索引模板。Elasticsearch 2.x 和 5.x 有一个模板,请使用相应的模板。

您使用 curl ( docs )安装模板。例如,

curl -XPUT 'http://localhost:9200/_template/filebeat' -d@/etc/filebeat/filebeat.template.json

于 2016-12-16T19:54:40.403 回答