Используя Elasticsearch и filebeats, как выполнить конвейер только для определенных файлов?

Я хочу запускать свой конвейер только для файлов, путь к журналу которых содержит определенное ключевое слово. Как мне это сделать в конвейере?

Конвейер (удалил мой шаблон и шаблоны, так как он не актуален):

{
  "description" : "...",
  "processors": [
    {
      "grok": {
        "if": "ctx['log']['file']['path'].value.contains('keyword')",
        "field": "message",
      }
    }
  ]
}

В Kibana я вижу, что у меня есть log.file.path, доступный в качестве метаданных, и я просто хочу запустить конвейер, если он содержит ключевое слово, но я получаю ошибку времени выполнения из-за моего оператора if.

Спасибо за вашу помощь!

Обновлено: я думаю, что проблема заключается в том, как я пытаюсь получить доступ к полю log.file.path, поскольку я не знаю, как правильно ссылаться на него отсюда.

0
0
433
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы, вероятно, можете использовать процессор Drop https://www.elastic.co/guide/en/elasticsearch/reference/current/drop-processor.html

"drop": {
   "if": "ctx.log.file.path.contains('keyword');"
}

Вы можете найти более сложные примеры здесь: https://www.elastic.co/guide/en/elasticsearch/reference/master/ingest-conditional-complex.html

Я думал, что обработчик перетаскивания предотвращает индексацию документа, если он пропущен? Я бы хотел, чтобы он индексировался, а не проходил через мой конвейер.

OultimoCoder 15.12.2020 13:35

хорошо, просто не обрабатывается процессором grok? Если да, можете ли вы попробовать тот же синтаксис «если» в IF вашего процессора Grok?

Jaycreation 15.12.2020 13:39

Другие вопросы по теме