diff --git a/ldap/pool.go b/ldap/pool.go index 12a6588d4ce9836101ce90377be0abaaf3e204bb..f6831fe0c2808fabcf24e98cca568fc865f559cf 100644 --- a/ldap/pool.go +++ b/ldap/pool.go @@ -191,9 +191,8 @@ func (p *ConnectionPool) doRequest(ctx context.Context, name string, attrs []att }, backoff.WithContext(newExponentialBackOff(), ctx)) // Tracing: set the final status. - if span != nil { - span.SetStatus(errorToTraceStatus(rerr)) - } + setSpanStatus(span, rerr) + requestsCounter.WithLabelValues(name).Inc() if rerr != nil { requestErrors.WithLabelValues(name).Inc() @@ -269,17 +268,24 @@ func isProtocolError(err error) bool { return false } -func errorToTraceStatus(err error) (codes.Code, string) { +func setSpanStatus(span trace.Span, err error) { + if span == nil { + return + } + switch err { case nil: - return codes.Ok, "OK" + span.SetStatus(codes.Ok, "OK") + return case context.Canceled: - return codes.Error, "CANCELED" + span.SetStatus(codes.Error, "CANCELED") case context.DeadlineExceeded: - return codes.Error, "DEADLINE_EXCEEDED" + span.SetStatus(codes.Error, "DEADLINE_EXCEEDED") default: - return codes.Error, err.Error() + span.SetStatus(codes.Error, err.Error()) } + + span.RecordError(err) } var ( diff --git a/tracing/tracing.go b/tracing/tracing.go index d4185014b2b58f9308d72e56a247779f1c975641..835769078291d711b1f63550ee3f34b7264f3d82 100644 --- a/tracing/tracing.go +++ b/tracing/tracing.go @@ -75,12 +75,12 @@ func getServiceName() string { return filepath.Base(os.Args[0]) } -func defaultResource() *resource.Resource { +func defaultResource(serviceName string) *resource.Resource { r, _ := resource.Merge( resource.Default(), resource.NewWithAttributes( semconv.SchemaURL, - semconv.ServiceNameKey.String(getServiceName()), + semconv.ServiceNameKey.String(serviceName), ), ) return r @@ -128,8 +128,8 @@ func initTracing(serviceName string) { tp := trace.NewTracerProvider( trace.WithSampler(sampler), - trace.WithResource(defaultResource()), trace.WithBatcher(ze), + trace.WithResource(defaultResource(serviceName)), ) otel.SetTracerProvider(tp)