Проблема создания динамического индекса c из имени файла (filebeat) - PullRequest
0 голосов
/ 21 февраля 2020

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

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 - поток тренинга XML 2020-02-18 08:27: 08,603 ИНФОРМАЦИЯ информация: Fin de construction du flux de sort ie.

тестирование шаблона:

enter image description here

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Я думаю, что наиболее вероятно проблема может быть

  1. с вашими исходными данными
  2. шаблон, который вы используете

Возможно, используйте этот herokuapp инструмент для проверки шаблона Grok, независимо от того, получаете ли вы ожидаемый результат или нет на основе исходных данных.

Исключите проблему не с шаблоном Grok, предоставив фиксированное имя индекса, и проверьте значение of app_name в индексированных данных Elasticsearch.

Независимо от проблемы с шаблоном Grok, я бы порекомендовал не использовать извлеченное значение в том виде, как оно есть, если у вас нет полного контроля над исходными данными. Вместо этого предоставьте заданное по умолчанию имя индекса, если шаблон grok завершится неудачно с помощью Logsta sh условных операторов .

0 голосов
/ 24 февраля 2020

Я нашел решение, я использовал [log] [file] [path] вместо source, и я использовал mutate, чтобы преобразовать его в нижний регистр, теперь он создает индексы на основе имени исходного файла.

спасибо всем!

...