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