Как удалить префикс подчеркивания из ключей поля в logstash с помощью регулярных выражений - PullRequest
0 голосов
/ 31 мая 2018

Поскольку Kibana требуются префиксные подчеркивания в полевых ключах - ссылка (эта проблема кажется нерешенной), я не могу обработать значения ключей поля, которые идут с начальными подчеркиваниями по умолчанию (например, журналы-journald для докера) в Киабане.Я использую logstash в настоящее время, чтобы подтолкнуть журналы наasticsearch.Я прочитал этот ответ , который использует фильтр ruby ​​для удаления всех подчеркиваний , но я предполагаю, что этот метод сделает моего потребителя очень медленным.

Есть ли способ удалитьпрефикс подчеркивает из всех имен полей, используя силу регулярных выражений в logstash?

Например -

_HELO: World

теперь должен измениться на:

HELLO: World

вероятно,с использованием плагина, отличного от ruby

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Вам нужно прибегнуть к фильтру ruby, который ищет ключи, которые начинаются с _ и в основном переименовывает их (скопируйте значение в новый ключ, а затем удалите оригинальный ключ):

filter {
  ruby {
    code => "
      event.to_hash.keys.each { |k|
         if k.start_with?('_')
          event.set(k[1,-1],event.get(k))
          event.remove(k)
       end
     }
   "
  }
}
0 голосов
/ 05 июня 2018

Вы можете использовать фильтр kv , чтобы удалить префикс из ключей с помощью регулярных выражений.Он помогает автоматически анализировать сообщения (или определенные поля событий), которые относятся к разновидности foo=bar, и имеют параметр конфигурации remove_char_key, который используется для удаления строки символов из ключа.Например,

, это удалит символы <, >, [, ] и , из клавиш

filter {
  kv {
    remove_char_key => "<>\[\],"
  }
}

Другой параметр - remove_char_value, который можно использовать длянапример, удалить символы из значений

, это приведет к удалению символов <, >, [, ] и , из значений

filter {
  kv {
    remove_char_value => "<>\[\],"
  }
}

Их можно использовать с source для выполнения key=value поиска по

filter { 
  kv { 
    source => "message" 
    remove_char_value => "<>\[\],"
    remove_char_key => "<>\[\],"
  } 
}

Также обратите внимание на trim_key и trim_value options

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

Если вы просто хотите удалить подчеркивание, которое является первым символом поля с именем fieldname, вы можете использовать:

  mutate {
    gsub => [
      "fieldname", "^_", ""
    ]
  }

См. https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-gsub

...