From dc6acc78c32f8ef3ac38b364ea8f283418b5c01e Mon Sep 17 00:00:00 2001 From: DarthSim Date: Fri, 23 Aug 2024 18:47:31 +0300 Subject: [PATCH] Properly set the `net.host.name` and `http.url` tags in OpenTelemetry traces --- CHANGELOG.md | 3 +++ metrics/otel/otel.go | 12 +++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddc893fd60..ac6db64ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ - (pro) Add [monochrome](https://docs.imgproxy.net/latest/usage/processing#monochrome) processing option. - (pro) Add [duotone](https://docs.imgproxy.net/latest/usage/processing#duotone) processing option. +# Change +- Properly set the `net.host.name` and `http.url` tags in OpenTelemetry traces. + # Fix - Fix handling `#` symbols in `local://`, `s3://`, `gcs://`, `abs://`, and `swift://` URLs. - Fix `IMGPROXY_FALLBACK_IMAGE_HTTP_CODE` value check. Allow `0` value. diff --git a/metrics/otel/otel.go b/metrics/otel/otel.go index d62fbdc662..854ca6e747 100644 --- a/metrics/otel/otel.go +++ b/metrics/otel/otel.go @@ -35,8 +35,8 @@ import ( sdkmetric "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" - semconv "go.opentelemetry.io/otel/semconv/v1.17.0" - "go.opentelemetry.io/otel/semconv/v1.17.0/httpconv" + semconv "go.opentelemetry.io/otel/semconv/v1.20.0" + "go.opentelemetry.io/otel/semconv/v1.20.0/httpconv" "go.opentelemetry.io/otel/trace" "google.golang.org/grpc/credentials" @@ -397,10 +397,16 @@ func StartRootSpan(ctx context.Context, rw http.ResponseWriter, r *http.Request) ctx = propagator.Extract(ctx, propagation.HeaderCarrier(r.Header)) } + server := r.Host + if len(server) == 0 { + server = "imgproxy" + } + ctx, span := tracer.Start( ctx, "/request", trace.WithSpanKind(trace.SpanKindServer), - trace.WithAttributes(httpconv.ServerRequest("imgproxy", r)...), + trace.WithAttributes(httpconv.ServerRequest(server, r)...), + trace.WithAttributes(semconv.HTTPURL(r.RequestURI)), ) ctx = context.WithValue(ctx, hasSpanCtxKey{}, struct{}{})