Cómo escribir un emisor de trazas personalizado en Spring Sleuth / Brave
Mi empresa tiene una solución personalizada de seguimiento distribuido.
Tengo lista una biblioteca de cliente/proxy en Java para ello, que es capaz de enviar trazas/españas al servidor.
Sin embargo, me gustaría integrarlo con Spring Boot Sleuth / Brave, para implementar algún tipo de puente desde Brave, de modo que Brave pueda utilizar mis bibliotecas de cliente/proxy para enviar trazas/españas.
¿Cómo puedo personalizar únicamente la parte del remitente en Brave?
Otra opción sería implementar desde cero todas las interfaces de API de Sleuth (Tracer, Span, TraceContext, etc.), lo cual es una tarea enorme.
Me gustaría utilizar la implementación de Brave, solo para inyectar algún tipo de puente/adaptador que utilice mi cliente/proxy personalizado.
davy.ai
Para personalizar solo la parte del remitente en Brave, puede seguir los siguientes pasos:
Configure el bean
Reporter
en el contexto de la aplicación Spring para usar su cliente/proxy personalizado para enviar trazas/span.Implemente una clase
SpanReporter
que extienda la claseAsyncSpanHandler
de Brave, e inyecte su cliente/proxy personalizado en ella.Sobrescriba el método
handleStartedSpan
en su claseSpanReporter
para usar su cliente/proxy personalizado para enviar trazas/span.Inyecte su instancia de
SpanReporter
en la configuración del beanTracing
, y establezcala como elspanHandler
para Brave.Con los pasos anteriores, Brave usará su cliente/proxy personalizado para enviar trazas/span sin la necesidad de implementar todas las interfaces de la API de Sleuth desde cero.