Skip to content

Commit d86bcd0

Browse files
authored
Make Zipkin transport metric tag more specific (#867)
Signed-off-by: Pavol Loffay <[email protected]>
1 parent b0c642b commit d86bcd0

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

receiver/zipkinreceiver/trace_receiver.go

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,10 @@ import (
4848
)
4949

5050
const (
51-
receiverTransport = "http"
51+
receiverTransportV1Thrift = "http_v1_thrift"
52+
receiverTransportV1JSON = "http_v1_json"
53+
receiverTransportV2JSON = "http_v2_json"
54+
receiverTransportV2PROTO = "http_v2_proto"
5255
)
5356

5457
var errNextConsumerRespBody = []byte(`"Internal Server Error"`)
@@ -310,9 +313,10 @@ func (zr *ZipkinReceiver) ServeHTTP(w http.ResponseWriter, r *http.Request) {
310313
receiverTagValue = zipkinV2TagValue
311314
}
312315

316+
transportTag := transportType(r)
313317
ctx = obsreport.ReceiverContext(
314-
ctx, zr.instanceName, receiverTransport, receiverTagValue)
315-
ctx = obsreport.StartTraceDataReceiveOp(ctx, zr.instanceName, receiverTransport)
318+
ctx, zr.instanceName, transportTag, receiverTagValue)
319+
ctx = obsreport.StartTraceDataReceiveOp(ctx, zr.instanceName, transportTag)
316320

317321
pr := processBodyIfNecessary(r)
318322
slurp, _ := ioutil.ReadAll(pr)
@@ -619,3 +623,17 @@ func zipkinTagsToTraceAttributes(tags map[string]string, skind zipkinmodel.Kind)
619623

620624
return &tracepb.Span_Attributes{AttributeMap: amap}
621625
}
626+
627+
func transportType(r *http.Request) string {
628+
v1 := r.URL != nil && strings.Contains(r.URL.Path, "api/v1/spans")
629+
if v1 {
630+
if r.Header.Get("Content-Type") == "application/x-thrift" {
631+
return receiverTransportV1Thrift
632+
}
633+
return receiverTransportV1JSON
634+
}
635+
if r.Header.Get("Content-Type") == "application/x-protobuf" {
636+
return receiverTransportV2PROTO
637+
}
638+
return receiverTransportV2JSON
639+
}

0 commit comments

Comments
 (0)