首页 > 解决方案 > 从文件名(filebeat)创建动态索引的问题

问题描述

我正在尝试从源创建与文件名相同的索引名称,但它似乎不起作用,这是我的 logstash 配置文件:

input {
  beats{
 port=> 5044
 }
}

 filter {
 grok {
      match => ["source",".*\\%{GREEDYDATA:app_name}"]
   }
}
  output {
    stdout {
     codec => rubydebug
      }
     elasticsearch {
      hosts => ["localhost:9200"]
     index => "%{app_name}"
   }
 }

日志样本:

07:52:29.040 [ORB.thread.pool : 0][INFO] ServiceArriereGuichet - @PostConstruct ServiceArriereGuichet 2020-02-17 08:05:33 INFO 认证 - Traitement Flux XML 2020-02-18 08:27:08,603 信息信息: Fin de construction du flux de sortie。

模式测试:

在此处输入图像描述

标签: logstashfilebeat

解决方案


我认为最有可能的问题可能是

  1. 使用您的源数据
  2. 您正在使用的模式

可能使用这个herokuapp 工具来测试您的 grok 模式,无论您是否根据源数据获得预期的结果。

通过给出一个固定的索引名称并测试 Elasticsearch 索引数据中 app_name 的值,排除 Grok 模式的问题。

不管 Grok 模式问题如何,我建议不要按原样使用提取的值,除非您可以完全控制源数据。相反,提供一个默认的索引名称,以防 grok 模式使用Logstash 条件语句失败。


推荐阅读