Изящная обработка ошибок фильтра плагинов Logstash

Итак, я создаю плагин для logstash и, похоже, не могу найти никакой документации о том, как я должен обрабатывать исключения, выбрасываемые и/или спасаемые. Пока, как и в случае с grok, мы добавляем event["tag"] = ["_filter_error"], но что касается метаданных, таких как трассировка стека, тип ошибки и т. д., где они должны жить или их следует опустить?


person daino3    schedule 03.03.2016    source источник


Ответы (1)


Это своего рода индивидуальный вопрос, поэтому, по общему признанию, трудно ответить. Но я поделюсь, как мы это сделали, так что это может помочь кому-то.

  1. Спасти все исключения (в противном случае LogStash зависнет)
  2. Добавьте тег к событию event["tags"] = ["_filter_error"], чтобы его можно было запрашивать в будущем.
  3. Игнорировать трассировку стека и сообщение об ошибке (наше решение - вместо этого использовать тег)
  4. Используйте одно поле в качестве метаданных о теге, который мы добавили к событию. Например, если наш фильтр вообще взорвался, плюньте на него и двигайтесь дальше. Если наш фильтр провалился на 1/2 из-за фильтрации, добавьте к событию как можно больше данных, добавьте тег на шаге 2, затем создайте поле метаданных (например, event["unknown_tags"] = [1,6,7], где наш фильтр взорвался на тегах 1, 6, 7, но прошел для всего остального)
person daino3    schedule 10.03.2016