У меня есть приложение для распространения, которое состоит из нескольких сервисов Go. Некоторые из них используют Кафку в качестве шины данных. Я смог отследить вызовы между службами, используя opentracing
с Jaeger. У меня проблема с отображением интервалов Кафки на графике, они отображаются как пробелы.
Вот что я смог сделать.
Начальные промежутки были созданы промежуточным ПО gRPC. Сторона производителя:
...
kafkaMsg := kafka.Message{Key: []byte(key), Value: msgBytes}
headers:=make(map[string]string)
if span := opentracing.SpanFromContext(ctx); span != nil {
opentracing.GlobalTracer().Inject(
span.Context(),
opentracing.TextMap,
opentracing.TextMapCarrier(headers))
}
for headerKey, headerValue:=range headers{
msg.Headers = append(msg.Headers, kafka.Header{
Key: headerKey,
Value: []byte(headerValue),
})
}
// Write message to Kafka
...
Потребительская сторона:
...
// read headers from Kafka message
headers := make(map[string]string)
for _, header := range kafkaMessage.Headers{
headers[header.Key]=string(header.Value)
}
spanContext, _ := opentracing.GlobalTracer().Extract(opentracing.TextMap, opentracing.TextMapCarrier(headers))
span := opentracing.StartSpan(
"Consumer",
opentracing.FollowsFrom(spanContext))
defer span.Finish()
...
Как мне изменить это, чтобы построить график на графике, когда сообщение было в Кафке?