kafka opentracing

kafka调用链跟踪的核心原理是通过kafka的header消息头,将发送者producer和消费者consumer关联起来。

在没有服务网格的环境,通过opentracing-api将跟踪信息串联,发送给jaeger UI界面。使用io.opentracing.Tracer.inject(SpanContext spanContext, Format<C> format, C carrier)将标准的调用链信息SpanContext 注入到producer的header(carrier)头中,再从consumer的header头中提取

 

可以使用重写kafka客户端Producer,Consumer或者分别给kafka客户端Prodcuer,Consumer增加拦截器来实现

 

效果:

image.png

image.png

https://github.com/jeqo/post-kafka-opentracing 

 

 

 producerconsumer

ProducerRecord(topic=greetings-topic,

partition=null,

headers=RecordHeaders(headers=[],

isReadOnly=false),

key=jeqo1,

value=Hijeqo1,

timestamp=null)

 

ProducerRecord(topic=greetings-topic,

partition=null,

headers=RecordHeaders(headers=[RecordHeader(key=uber-trace-id,

value=[99,

57,

49,

57,

57,

54,

102,

56,

48,

98,

97,

57,

56,

54,

55,

99,

58,

100,

98,

102,

99,

99,

48,

50,

50,

54,

97,

53,

51,

48,

51,

49,

98,

58,

100,

51,

99,

57,

102,

99,

57,

99,

48,

48,

50,

100,

98,

51,

50,

52,

58,

49])],

isReadOnly=false),

key=jeqo1,

value=Hijeqo1,

timestamp=null)

 

ConsumerRecord(topic=greetings-topic,

partition=0,

offset=43,

CreateTime=1558420361614,

serializedkeysize=5,

serializedvaluesize=8,

headers=RecordHeaders(headers=[RecordHeader(key=uber-trace-id,

value=[99,

57,

49,

57,

57,

54,

102,

56,

48,

98,

97,

57,

56,

54,

55,

99,

58,

100,

98,

102,

99,

99,

48,

50,

50,

54,

97,

53,

51,

48,

51,

49,

98,

58,

100,

51,

99,

57,

102,

99,

57,

99,

48,

48,

50,

100,

98,

51,

50,

52,

58,

49])],

isReadOnly=false),

key=jeqo1,

value=Hijeqo1)

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值