我真的是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结构使您可以按各种索引索引数据。
希望我能为您提供帮助。