Logstash создать новое поле на основе существующего поля - PullRequest
0 голосов
/ 17 мая 2018

У меня есть данные, поступающие из запросов к базе данных с использованием входного плагина jdbc, и результат запросов содержит поле url, из которого я хочу извлечь несколько свойств.

Примеры URL:

  • / инцидент.do? Sys_id = 0dc18b246faa17007a64cbe64f3ee4e1 & sysparm_view
  • / navpage_form_default.do
  • JOB: обработка событий чтения электронной почты
  • JOB: система - сокращение ресурсов

Я добавил шаблоны регулярных выражений в файл шаблонов grok:

webpage_category .*
job_type .*

У меня есть два типа URL, поэтому я использовал, если в блоке фильтра, чтобы различать их

Конфигурация Я пытался до сих пор:

filter {
       if [url] =~ /JOB: .*/ {
               grok {
                    patterns_dir => ["/etc/logstash/patterns"]
                    match => {
                             "url" => "JOB: %{job_type:job_type}"
                    }
               }
        } else
        if [url] =~ /\/.*\.do\?.*/ {
                grok {
                     patterns_dir => ["/etc/logstash/patterns"]
                     match => {
                              "url" => "/{webpage_category:webpage_category}\.do\?.*"
                     }
                 }
         }
}

Создание нового полядля URL, начинающихся с JOB:, работает нормально, но webpage_category не работает вообще.Это потому, что регулярные выражения нельзя использовать внутри матча?

1 Ответ

0 голосов
/ 21 мая 2018

Проблема в том, что вы пытаетесь использовать шаблон grok внутри фильтра mutate, который не будет работать. mutate и grok - два отдельных плагина фильтра.

Вам нужно использовать add_field внутри фильтра grok, если вы хотите использовать шаблон grok для создания поля. пожалуйста, помните, add_field поддерживается всеми плагинами фильтра.

Пожалуйста, посмотрите на следующий пример,

filter {
  grok {
    add_field => { "foo_%{somefield}" => "Hello world, from %{host}" }
  }
}

В вашем случае это будет,

filter{
   grok {
      add_field => {
         "webpage_category" => "%{webpage_category:url}"
          "job_type" => "%{job_type:url}"
       }
   }
}

Пожалуйста, убедитесь, что patterns_dir импортировано,

patterns_dir => ["./patterns"] => ["./patterns"]

пожалуйста, проверьте документация фильтра Грока .

...