From 7731a4d6af401475d5662bddace2a0b1f23ca7ed Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Mon, 27 Mar 2023 12:04:43 +0100 Subject: [PATCH] Tracing: Add more detail to HTTP Outgoing Request (#64757) Add more detail to HTTP Outgoing Request. As events rather than sub-spans, to save cluttering the view. --- go.mod | 1 + go.sum | 2 ++ pkg/infra/httpclient/httpclientprovider/tracing_middleware.go | 3 +++ 3 files changed, 6 insertions(+) diff --git a/go.mod b/go.mod index 8937c9ab8de..187fc57d730 100644 --- a/go.mod +++ b/go.mod @@ -107,6 +107,7 @@ require ( github.com/yudai/gojsondiff v1.0.0 go.opentelemetry.io/collector v0.31.0 go.opentelemetry.io/collector/model v0.31.0 + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.37.0 go.opentelemetry.io/otel v1.11.2 go.opentelemetry.io/otel/exporters/jaeger v1.0.0 go.opentelemetry.io/otel/sdk v1.11.2 diff --git a/go.sum b/go.sum index 19bb73edfe1..1cb3450bcb2 100644 --- a/go.sum +++ b/go.sum @@ -2381,6 +2381,8 @@ go.opentelemetry.io/contrib v0.21.0/go.mod h1:EH4yDYeNoaTqn/8yCWQmfNB78VHfGX2Jt2 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.21.0/go.mod h1:Vm5u/mtkj1OMhtao0v+BGo2LUoLCgHYXvRmj0jWITlE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.37.0 h1:+uFejS4DCfNH6d3xODVIGsdhzgzhh45p9gpbHQMbdZI= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.37.0/go.mod h1:HSmzQvagH8pS2/xrK7ScWsk0vAMtRTGbMFgInXCi8Tc= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.37.0 h1:H0wsFGpY3uD/zB/5UubZgkgnd378/ogV9BH2itqEFbc= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.37.0/go.mod h1:xXATK4LOREcHuSE4sWsK1VO7FUxa6L58rAORHFTdhAI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.21.0/go.mod h1:JQAtechjxLEL81EjmbRwxBq/XEzGaHcsPuDHAx54hg4= go.opentelemetry.io/contrib/propagators/jaeger v1.6.0 h1:tCc+sWgHVeOMp4zmUxHHTaoA5vQlGO089zfg97d+BvU= go.opentelemetry.io/contrib/propagators/jaeger v1.6.0/go.mod h1:cqu1XdBYBXqXHxZLJdK00G9rT5Hda7Fa938I8LVYz/Y= diff --git a/pkg/infra/httpclient/httpclientprovider/tracing_middleware.go b/pkg/infra/httpclient/httpclientprovider/tracing_middleware.go index 6531eeb4d75..c0d12063c8c 100644 --- a/pkg/infra/httpclient/httpclientprovider/tracing_middleware.go +++ b/pkg/infra/httpclient/httpclientprovider/tracing_middleware.go @@ -3,11 +3,13 @@ package httpclientprovider import ( "fmt" "net/http" + "net/http/httptrace" "strconv" "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/tracing" + "go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" @@ -24,6 +26,7 @@ func TracingMiddleware(logger log.Logger, tracer tracing.Tracer) httpclient.Midd ctx, span := tracer.Start(req.Context(), "HTTP Outgoing Request", trace.WithSpanKind(trace.SpanKindClient)) defer span.End() + ctx = httptrace.WithClientTrace(ctx, otelhttptrace.NewClientTrace(ctx, otelhttptrace.WithoutSubSpans(), otelhttptrace.WithoutHeaders())) req = req.WithContext(ctx) for k, v := range opts.Labels { span.SetAttributes(k, v, attribute.Key(k).String(v))