Многострочный кодек Logstash для стековых трассировок Java
Документация logstash указывает, что вы можете свернуть несколько строк с отступом в записи журнала трассировки стека Java в одно событие, используя многострочный кодек:
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html
input {
syslog {
type => syslog
port => 8514
codec => multiline {
pattern => "^\s"
what => "previous"
}
}
}
Это основано на том, что logstash находит отступ в начале строки и комбинирует его с предыдущей строкой.
Однако документация logstash - единственное место, где я могу найти ссылку на это. Общее сообщество пользователей, кажется, использует сложные фильтры Grok для достижения того же эффекта.
Я пробовал базовый шаблон отступов, предоставленный logstash, но он не работает. Кому-нибудь еще удалось заставить это работать, сопоставляя образец отступа?
1 ответ
Да хоть и не с syslog {}
вход. Я сделал это с file {}
вход и журналы Tomcat. Если трассировки стека поступают в системный журнал с новым событием в каждой строке, и при этом все еще имеют обычный префикс системного журнала для метки даты и т. Д., Их повторная сборка в унитарную стековую печать становится намного сложнее. Это все еще можно сделать, но требует гораздо более широких фильтров.
- Входной кодек не является многострочным; в случае события на строку многострочный кодек не может справиться с этим.
- Фильтр Grok для разделения сообщения системного журнала на части, принимая часть SYSLOGMESSAGE в свое собственное поле.
- С использованием
multiline {}
фильтр в поле SYSLOGMESSAGE для повторной сборки вашего стека дамп. - Используйте один и только один фильтр-работник (
-w
флаг), это единственный способ убедиться, что собрана вся трассировка стека.
Если это вообще возможно, лучше использовать file {}
кодек файла, в который стекаются следы стека, и используйте метод отступа, который вы уже нашли.