Open IT Experts for Enterprise

Zylk empresa de desarrollo de ecommerce

Configurando liferay para que deje las trazas en colas de kafka

Gustavo Fernández
Gustavo Fernández

Siguiendo con las pruebas de los productos mencionados en anteriores
post,
una de las cosas más o menos sencillas que se puede hacer es,
configurar los distintos productos que usan log4j para añadirles
un nuevo appender de tipo cola de
kafka
. El propio proyecto de kafka trae un appender
para log4j

Para hacer uso del mismo basta con hacer tres cosas

  1. Añadir los siguientes jars al ROOT/WEB-INF/lib de liferay
    1. kafka_2.10-0.8.1.1.jar
    2. metrics-core-2.2.0.jar
    3. scala-library.jar
  2. Crear una cola (tipo topic) con las particiones y replicas que se
    quiera

    1. ./kafka-topics.sh –create –zookeeper
      lug000.zylk.net:2181 –replication-factor 3 –partition 3
      –topic test-3-3
  3. Añadir la logger de liferay el appender nuevo y añadirlo como referencia

[…]

<appender name="KAFKA"
class="kafka.producer.KafkaLog4jAppender">
 <param name="BrokerList"
value="lug000.zylk.net:9092,lug002.zylk.ne:9092,lug004.zylk.net:9092"
/>
 <param name="Topic"
value="test-1-1" />
 <param
name="ProducerType" value="async" />
 <layout
class="org.apache.log4j.EnhancedPatternLayout">
 
<param name="ConversionPattern" value="%d{ABSOLUTE}
%-5p [%t][%c{1}:%L] %m%n" />
 </layout>
</appender>

[…]

<root>
 <priority value="DEBUG" />
 <appender-ref ref="CONSOLE" />
 <appender-ref ref="FILE" />
 <appender-ref
ref="KAFKA" />
</root>

 

Siguiendo estos tres sencillos pasos tenemos las trazas en la
consola, en un fichero y en una cola de kafka. Ahora solo quedaría
consumirla con algun consumer.

Evidentemente para ponerlo en producción habría que hacer muchas más
pruebas y estresar el sistema para ver si funciona como se espera.
Por ejemplo hemos detectado un problemilla que habría que
solucionar y está relacionado con los retornos de carro
(creemos)
porque los mensajes que log4j manda a las colas de
kafka de alguna manera pierden parte de la información si el mensaje
tiene retornos de carro, por ejemplo perdemos el stackTrace (no
sabemos si lo hace el publicador o el consumidor que estamos usando
para ver el topic creado para las pruebas)

A continuación un pantallazo del consumer que trae por defecto kafka
(./kafka-console-consumer.sh –zookeeper localhost:2181
–topic test-1-1 –from-beginning)
para ver los topics

Si te ha parecido interesante comparte este post en RRS

Facebook
LinkedIn
Telegram
Email

Leer más sobre temas relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *