A documentação do logstash indica que você pode recolher as várias linhas recuadas em uma entrada de log de rastreamento de pilha Java em um único evento usando o codec multilinha:
https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html
input {
syslog {
type => syslog
port => 8514
codec => multiline {
pattern => "^\s"
what => "previous"
}
}
}
Isso se baseia em logstash encontrar um recuo no início da linha e combiná-lo com a linha anterior.
No entanto, a documentação do logstash é o único lugar onde posso encontrar uma referência a isso. A comunidade geral de usuários parece estar usando elaborados filtros grok para obter o mesmo efeito.
Eu tentei o padrão de indentação básico fornecido pelo logstash, mas não funcionou. Alguém mais conseguiu fazer isso funcionar combinando o padrão de indentação?
Sim, embora não com a
syslog {}
entrada. Eu fiz isso com osfile {}
logs de entrada e Tomcat. Se os stacktraces estão entrando no syslog com um novo evento em cada linha, e ainda tendo o prefixo syslog usual de datastamp e tal, reagrupá-los em um stackdump unitário se torna muito mais difícil. Ainda pode ser feito, mas requer filtros muito mais extensos.multiline {}
filtro no campo SYSLOGMESSAGE para remontar seu stackdump.-w
sinalizador), é a única maneira de garantir que todo o stacktrace seja reunido.Se possível, é melhor usar o
file {}
codec no arquivo em que os rastreamentos de pilha são emitidos e usar o método de indentação que você já encontrou.