Browse Source

Properly set the `net.host.name` and `http.url` tags in OpenTelemetry traces

DarthSim 8 tháng trước cách đây
mục cha
commit
dc6acc78c3
2 tập tin đã thay đổi với 12 bổ sung3 xóa
  1. 3 0
      CHANGELOG.md
  2. 9 3
      metrics/otel/otel.go

+ 3 - 0
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.

+ 9 - 3
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{}{})