是否可以为Elasticsearch维护从FileBeat到LogStash的索引名?

问题描述 投票:0回答:1

我真的是ELK的新手,我已经建立了一个ELK堆栈,其中FileBeat将日志发送到LogStash进行一些处理,然后输出到Elasticsearch。

我想知道是否有可能一直保持filebeat.yml中设置的索引名称到Elasticsearch。之所以这样,是因为我要为生成日志的不同类型的应用程序服务器提供多个索引。如果我在logstash.conf中省略索引,则默认设置;但是,如果我指定一些内容,显然可以生效。我只是希望它使用FileBeat中设置的内容。

或者有某种方法可以配置多个输出部分,在这些部分中可以评估日志类型,以便我可以适当地命名它们?

filebeat.yml

# Optional index name. The default index name is set to filebeat in all lowercase.
  index: "something-%{+yyyy.MM.dd}"

logstash.conf

output {
  elasticsearch { 
    hosts => ["somehost:12345"]
    index => "my_filebeat_index_name_would_be_preferred-%{+yyyy-MM-dd}"
  }
}

我想继续使用LogStash,因为我有自定义的GROK模式等,而不是直接进入Elastic。任何帮助将不胜感激。

谢谢。

elasticsearch logging logstash elastic-stack filebeat
1个回答
0
投票

您可以在filebeat.yml中指定的索引名称仅适用于elasticsearch输出,因为filebeat直接连接到您的集群。但是,如果您将Logstash用作文件信号目标,则不可能。

问:或者有某种方法可以配置多个输出部分,在这些部分中可以评估日志类型,以便我可以适当地命名它们?

是的,这在Logstash管道中是绝对可行的(并且有些普遍)。因此,首先,您需要为日志设置某些条件/标记,以使Logstash选择正确的elasticsearch输出(以及正确的索引)。您可以通过标签来实现。因此,例如,类别A的所有日志/事件都获得标签“ tag_A”(您可以在特定的日志输入中或通常在filebeat.yml中为每个日志源分别设置它们)。

下一步是在logstash管道中实现标签值的评估。您可以按照以下方式进行操作:

output{
  if "tag_A" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-A-%{+yyyy-MM-dd}"
    }
  }
  else if "tag_B" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-B-%{+yyyy-MM-dd}"
    }
  }
}

这种if-else结构使您可以按各种索引索引数据。

希望我能为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.