Поля, проанализированные по пути журнала, не добавлены в logstash - PullRequest
2 голосов
/ 08 января 2020

Я анализирую несколько файлов журнала с помощью logsta sh - и хочу добавить поля, основанные на пути файлов к моему выводу. Вот соответствующие части файла конфигурации:

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)"
}

Исходя из этого, я ожидал получить соответствующие поля при разборе сообщения и Еще несколько полей от разбора пути. Тем не менее, я ни одно из полей из "пути" синтаксического анализа не добавляются.

Что мне не хватает? Как добавить поля site, version, node и file?

1 Ответ

0 голосов
/ 07 апреля 2020

Создание ответа из комментария, который решил проблему (отсюда и вики сообщества).

По-видимому, он может исходить из break_on_match option, который по умолчанию имеет значение true. Из do c:

Первое успешное совпадение по grok приведет к завершению фильтра. Поэтому, если %{TOMCAT_LOG_1} или %{TOMCAT_LOG_2} совпадают, он не будет пытаться сопоставить поле пути

...