Skip to content

Commit 1e8ab86

Browse files
committed
Migrate to uptrace
1 parent 5cb7977 commit 1e8ab86

File tree

2 files changed

+11
-70
lines changed

2 files changed

+11
-70
lines changed

api/pkg/di/container.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,10 +1111,11 @@ func (container *Container) UserRepository() repositories.UserRepository {
11111111

11121112
// InitializeTraceProvider initializes the open telemetry trace provider
11131113
func (container *Container) InitializeTraceProvider() func() {
1114-
if isLocal() {
1115-
return container.initializeUptraceProvider(container.version, container.projectID)
1116-
}
1117-
return container.initializeGoogleTraceProvider(container.version, container.projectID)
1114+
return container.initializeUptraceProvider(container.version, container.projectID)
1115+
//if isLocal() {
1116+
// return container.initializeUptraceProvider(container.version, container.projectID)
1117+
//}
1118+
//return container.initializeGoogleTraceProvider(container.version, container.projectID)
11181119
}
11191120

11201121
func (container *Container) initializeGoogleTraceProvider(version string, namespace string) func() {

api/pkg/middlewares/otel_context_middleware.go

Lines changed: 6 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ package middlewares
33
import (
44
"context"
55
"fmt"
6-
"strconv"
7-
"strings"
86

97
"github.com/NdoleStudio/httpsms/pkg/telemetry"
108
"github.com/gofiber/fiber/v2"
@@ -21,21 +19,10 @@ const (
2119
// OtelTraceContext adds a trace for an HTTP request
2220
func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, header string, namespace string) fiber.Handler {
2321
return func(c *fiber.Ctx) error {
24-
// Get the Context from the request
25-
spanContext, errors := spanContextFromHeader(c.Get(header))
26-
if len(errors) != 0 {
27-
logger.Error(stacktrace.NewError(strings.Join(errors, "\n")))
28-
}
29-
30-
if !spanContext.IsValid() {
31-
if c.Get(header) != "" {
32-
logger.Error(stacktrace.NewError("invalid trace context %s creating new context", c.Get(header)))
33-
}
34-
otelTracer := otel.Tracer(namespace)
35-
_, span := otelTracer.Start(context.Background(), fmt.Sprintf("%s %s", c.Method(), c.OriginalURL()))
36-
defer span.End()
37-
spanContext = span.SpanContext()
38-
}
22+
otelTracer := otel.Tracer(namespace)
23+
_, span := otelTracer.Start(context.Background(), fmt.Sprintf("%s %s", c.Method(), c.OriginalURL()))
24+
defer span.End()
25+
spanContext := span.SpanContext()
3926

4027
logger.WithSpan(spanContext).
4128
WithString("http.method", c.Method()).
@@ -46,8 +33,7 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, header s
4633
defer span.End()
4734

4835
ctxLogger := tracer.CtxLogger(logger, span)
49-
traceID := spanContext.TraceID().String()
50-
span.SetAttributes(attribute.Key("traceID").String(traceID))
36+
span.SetAttributes(attribute.Key("traceID").String(span.SpanContext().TraceID().String()))
5137
span.SetAttributes(attribute.Key("SpanID").String(span.SpanContext().SpanID().String()))
5238
span.SetAttributes(attribute.Key("traceFlags").String(spanContext.TraceFlags().String()))
5339
span.SetAttributes(attribute.Key("clientVersion").String(c.Get(clientVersionHeader)))
@@ -58,7 +44,7 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, header s
5844
response := c.Next()
5945

6046
statusCode := c.Response().StatusCode()
61-
span.AddEvent(fmt.Sprintf("finished handling request with traceID: [%s], statusCode: [%d]", traceID, statusCode))
47+
span.AddEvent(fmt.Sprintf("finished handling request with traceID: [%s], statusCode: [%d]", span.SpanContext().TraceID().String(), statusCode))
6248

6349
if statusCode >= 300 && len(c.Request().Body()) > 0 {
6450
ctxLogger.Warn(stacktrace.NewError(fmt.Sprintf("http.status [%d], body [%s]", statusCode, string(c.Request().Body()))))
@@ -67,49 +53,3 @@ func OtelTraceContext(tracer telemetry.Tracer, logger telemetry.Logger, header s
6753
return response
6854
}
6955
}
70-
71-
func spanContextFromHeader(parentContext string) (trace.SpanContext, []string) {
72-
result := trace.NewSpanContext(trace.SpanContextConfig{
73-
TraceID: trace.TraceID{},
74-
SpanID: trace.SpanID{},
75-
TraceState: trace.TraceState{},
76-
Remote: true,
77-
})
78-
79-
parts := strings.Split(parentContext, "/")
80-
var errors []string
81-
if len(parts) == 2 {
82-
traceID, err := trace.TraceIDFromHex(parts[0])
83-
if err != nil {
84-
errors = append(errors, fmt.Sprintf("could not get trace id %v", err))
85-
return result, errors
86-
}
87-
result = result.WithTraceID(traceID)
88-
89-
spanParts := strings.Split(parts[1], ";")
90-
if len(spanParts) == 1 {
91-
spanParts = append(spanParts, "")
92-
}
93-
94-
if len(spanParts) == 2 {
95-
val, err := strconv.ParseUint(spanParts[0], 10, 64)
96-
if err != nil {
97-
errors = append(errors, fmt.Sprintf("could not get trace id %v", err))
98-
return result, errors
99-
}
100-
101-
spanID, err := trace.SpanIDFromHex(fmt.Sprintf("%016x", val))
102-
if err != nil {
103-
errors = append(errors, fmt.Sprintf("could not get span trace id %v", err))
104-
return result, errors
105-
}
106-
result = result.WithSpanID(spanID)
107-
108-
if spanParts[1] == "o=1" {
109-
result = result.WithTraceFlags(trace.FlagsSampled)
110-
}
111-
}
112-
}
113-
114-
return result, errors
115-
}

0 commit comments

Comments
 (0)