Añadir nuevo comentario

Eventos multilínea de java

Me he topado con este post mientras buscaba cómo introducir eventos java multilínea en ElasticSearch, para funcionar con un 'ELK stack' completo. Gracias por el artículo; he leído las tres partes y eso me ha servido para aclarar varios conceptos que aún no tenía del todo claros. He revisado y seguido bastantes artículos en inglés sobre el tema, pero no he conseguido aún poner a funcionar correctamente ninguna de las soluciones encontradas. Básicamente, he encontrado dos aproximaciones al problema:

- Usar un filtro (Grok) para que las líneas que comiencen con un espacio en blanco se interpreten como pertenecientes a la línea anterior. Otra variante de esta estrategia es hacer que cada línea que no comience con un timestamp pertenezca a la línea anterior.

- La otra posible solución es, creo, modificar el modo en que log4j genera los logs, para evitar de ese modo la enorme carga de CPU que supone filtrar con Logstash los mensajes, analizando de qué evento se trata mediante el uso de alguna/s expresiones regulares, que no deja de ser un análisis masivo de cadenas de texto.

La segunda solución, según tengo entendido, es la que se considera más elegante, buena práctica y eficiente. ¿Sabrías cómo implementar esta solución?