mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
fix: use consistent tracer name (#4117)
This commit is contained in:
@ -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{
|
||||||
|
@ -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...)
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
Reference in New Issue
Block a user