Inconveniente con el salto de linea


(Cristian Valor) #1

Buenas, como menciona el asunto tengo problemas cuando estoy parseando un log en el siguiente formato:
"May 19, 2016 7:15:42 PM com.sun.xml.ws.transport.http.HttpAdapter fixQuotesAroundSoapAction
INFO: Received WS-I BP non-conformant Unquoted SoapAction HTTP header:
sendResponseStatus 530 SPA not supported by the object
java.lang.Throwable"

Resulta que utilizando el debugger de grok todo va bien pero cuando lo hago en logstash no me funciona como debería. Se donde es el problema y es que no me está tomando la definición de salto de linea (\n), he encontrado muchos ejemplos similares a lo que estoy intentando hacer y todos lo resuelven de la misma manera, pero por algún motivo mi logstash no lo logra resolver.

De la siguiente manera funciona de maravilla:
filter {
grok {
match => [ "message", "%{CATALINA_DATESTAMP:timestamp} %{NOTSPACE:className} %{WORD:methodName}" ]
}

Pero cuando quiero agregar el salto de linea de la siguiente manera, ya no me responde como debería:
filter {
grok {
match => [ "message", "%{CATALINA_DATESTAMP:timestamp} %{NOTSPACE:className} %{WORD:methodName}\n" ]
}
2.3.1
Estoy usando la última version estable 2.3.1 con todos los plugins

Saludos,
Cristian


(Gabriel Moskovicz) #2

Hola Cristian.

Dudo que el problema sea GROK. La realidad es que probablemente estes leyendo con el plugin the file {}. Este plugin unicamente lee lineas unicas divididas por el salto de linea. Quiere decir que si tu tienes

**_**_May 19, 2016 7:15:42 PM com.sun.xml.ws.transport.http.HttpAdapter fixQuotesAroundSoapAction_**_**
**_**_INFO: Received WS-I BP non-conformant Unquoted SoapAction HTTP header: _**_**
**_**_sendResponseStatus 530 SPA not supported by the object_**_**
**_**_java.lang.Throwable_**_**

Cada una de estas lineas se van a leer como lineas únicas. De aquí, vas a tener 4 distintos eventos que luego van a pasar por GROK y finalmente no vas a tener el resultado que tu quieres.

Para tener el resultado esperado, tienes que utilizar el multiline codec, que puede ser encontrado aquí: https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html

Basicamente este codec te permite pasar de multiline, a single line, quiere decir agrupando esas 4 lineas en una sola linea, y finalmente no tendrías problemas en únicamente configurar un único grok, sin saltos de lineas. Por lo que terminarias con algo del estilo:

May 19, 2016 7:15:42 PM com.sun.xml.ws.transport.http.HttpAdapter fixQuotesAroundSoapAction INFO: Received WS-I BP non-conformant Unquoted SoapAction HTTP header: sendResponseStatus 530 SPA not supported by the object java.lang.Throwable

Cualquier cosa quedo a las ordenes. Espero que esto sea de ayuda.

Saludos!

--Gabriel


(system) #3