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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以为Elasticsearch维护从FileBeat到LogStash的索引名?相关的知识,希望对你有一定的参考价值。

我真的是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。任何帮助将不胜感激。

谢谢。

答案

您可以在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结构使您可以按各种索引索引数据。

希望我能为您提供帮助。

以上是关于是否可以为Elasticsearch维护从FileBeat到LogStash的索引名?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以对 ElasticSearch 索引进行分区?

是否需要从Logstash向HTTPS输出到Elasticsearch购买“xpack”?

如何从Apache Flink写入Elasticsearch

ElasticSearch使用

Elasticsearch:使用 Debian 软件包安装 Elasticsearch

Elasticsearch:使用 Debian 软件包安装 Elasticsearch