fix: use consistent tracer name (#4117)

This commit is contained in:
Colin Adler
2022-09-19 13:46:26 -05:00
committed by GitHub
parent 794b88fab4
commit 153e96f574
3 changed files with 13 additions and 7 deletions

View File

@ -198,8 +198,8 @@ func New(options *Options) *API {
apps := func(r chi.Router) { apps := func(r chi.Router) {
r.Use( r.Use(
tracing.Middleware(api.TracerProvider),
httpmw.RateLimitPerMinute(options.APIRateLimit), httpmw.RateLimitPerMinute(options.APIRateLimit),
tracing.HTTPMW(api.TracerProvider),
httpmw.ExtractAPIKey(options.Database, oauthConfigs, true), httpmw.ExtractAPIKey(options.Database, oauthConfigs, true),
httpmw.ExtractUserParam(api.Database), httpmw.ExtractUserParam(api.Database),
// Extracts the <workspace.agent> from the url // Extracts the <workspace.agent> from the url
@ -227,9 +227,9 @@ func New(options *Options) *API {
}) })
}) })
r.Use( r.Use(
tracing.Middleware(api.TracerProvider),
// Specific routes can specify smaller limits. // Specific routes can specify smaller limits.
httpmw.RateLimitPerMinute(options.APIRateLimit), httpmw.RateLimitPerMinute(options.APIRateLimit),
tracing.HTTPMW(api.TracerProvider),
) )
r.Get("/", func(w http.ResponseWriter, r *http.Request) { r.Get("/", func(w http.ResponseWriter, r *http.Request) {
httpapi.Write(w, http.StatusOK, codersdk.Response{ httpapi.Write(w, http.StatusOK, codersdk.Response{

View File

@ -10,17 +10,21 @@ import (
"go.opentelemetry.io/otel/trace" "go.opentelemetry.io/otel/trace"
) )
// HTTPMW adds tracing to http routes. // Middleware adds tracing to http routes.
func HTTPMW(tracerProvider trace.TracerProvider) func(http.Handler) http.Handler { func Middleware(tracerProvider trace.TracerProvider) func(http.Handler) http.Handler {
var tracer trace.Tracer
if tracerProvider != nil {
tracer = tracerProvider.Tracer(TracerName)
}
return func(next http.Handler) http.Handler { return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
if tracerProvider == nil { if tracer == nil {
next.ServeHTTP(rw, r) next.ServeHTTP(rw, r)
return return
} }
// start span with default span name. Span name will be updated to "method route" format once request finishes. // start span with default span name. Span name will be updated to "method route" format once request finishes.
ctx, span := tracerProvider.Tracer("").Start(r.Context(), fmt.Sprintf("%s %s", r.Method, r.RequestURI)) ctx, span := tracer.Start(r.Context(), fmt.Sprintf("%s %s", r.Method, r.RequestURI))
defer span.End() defer span.End()
r = r.WithContext(ctx) r = r.WithContext(ctx)
@ -59,5 +63,5 @@ func EndHTTPSpan(r *http.Request, status int, span trace.Span) {
} }
func StartSpan(ctx context.Context, opts ...trace.SpanStartOption) (context.Context, trace.Span) { func StartSpan(ctx context.Context, opts ...trace.SpanStartOption) (context.Context, trace.Span) {
return trace.SpanFromContext(ctx).TracerProvider().Tracer("").Start(ctx, FuncNameSkip(1), opts...) return trace.SpanFromContext(ctx).TracerProvider().Tracer(TracerName).Start(ctx, FuncNameSkip(1), opts...)
} }

View File

@ -5,6 +5,8 @@ import (
"strings" "strings"
) )
const TracerName = "coderd"
func FuncName() string { func FuncName() string {
fnpc, _, _, ok := runtime.Caller(1) fnpc, _, _, ok := runtime.Caller(1)
if !ok { if !ok {