Logstash 从日志路径解析的字段未添加到日志存储中

Logstash 从日志路径解析的字段未添加到日志存储中,logstash,logstash-grok,Logstash,Logstash Grok,我正在使用logstash解析多个日志文件,并希望根据文件路径将字段添加到输出中。以下是配置文件的相关部分: input { file { path => "/mnt/logs/**/console-20200108*.log" type => "tomcat" start_position => "beginning" sincedb_path => "/dev/null" } } filter { if [type] ==

我正在使用logstash解析多个日志文件,并希望根据文件路径将字段添加到输出中。以下是配置文件的相关部分:

input {
  file {
    path => "/mnt/logs/**/console-20200108*.log"
    type => "tomcat"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}

filter {
  if [type] == "tomcat" {
    grok {
      patterns_dir => "/usr/share/logstash/patterns"
      match => {
        "message" => [ "%{TOMCAT_LOG_1}", "%{TOMCAT_LOG_2}" ]
        "path" => "\/mnt\/logs\/%{DATA:site}\/%{DATA:version}\/node%{NUMBER:node}\/store\/tomcat\/%{DATA:file}\.log"
      }
    }
  }
}
以下是一个示例输出:

{
         "level" => "INFO",
          "type" => "tomcat",
          "data" => "Finished indexer cronjob.\r",
     "timestamp" => "08-Jan-2020 11:00:05.860",
    "qualifier1" => "[update-backofficeIndex-CronJob::ServicelayerJob]",
    "@timestamp" => 2020-01-08T11:04:47.364Z,
          "path" => "/mnt/logs/protec/qa/node1/store/tomcat/console-20200108.log",
    "qualifier3" => "[SolrIndexerJob]",
          "host" => "elk",
      "@version" => "1",
       "message" => "INFO   | jvm 1    | srvmain | 08-Jan-2020 11:00:05.860 INFO  [update-backofficeIndex-CronJob::ServicelayerJob] (update-backofficeIndex-CronJob) [SolrIndexerJob] Finished indexer cronjob.\r",
    "qualifier2" => "(update-backofficeIndex-CronJob)"
}
基于此,我希望通过解析消息获得相关字段,并通过解析路径获得更多字段。然而,我不想添加“路径”解析中的任何字段


我错过了什么?如何添加
站点
版本
节点
文件
字段?

从解决问题的评论中创建答案(因此社区wiki)


显然,它可能来自
匹配时中断选项
,该选项默认为true。从文档:

grok的第一次成功匹配将导致过滤器完成。因此,如果
%{TOMCAT_LOG_1}
%{TOMCAT_LOG_2}
匹配,它将不会尝试匹配路径字段


我不明白为什么它不起作用,但您可以将grok筛选器一分为二,一个用于消息,一个用于路径。显然,它可能来自默认为true的
break\u on\u match
选项。从:
grok的第一次成功匹配将导致过滤器完成。
因此,如果
%{TOMCAT_LOG_1}
%{TOMCAT_LOG_2}
匹配,它将不会尝试匹配路径field@baudsp啊!!这是有道理的。当我将grok过滤器分为两个独立的过滤器时——一个用于消息,另一个用于路径——它确实按照预期工作@如果你加上你的评论作为回答,我会接受的。