Skip to content

HTTP Method always blank in "Backend Performance"Β #923

@arp242

Description

@arp242

I configured Sentry to record performance. Overall this works reasonably well, but the HTTP method is always blank:

Image

Image

Try as I might, I just can't get it to show up; my little middleware:

func metrics() func(http.Handler) http.Handler {
	return func(next http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			// Get path from router, so "/api/2/roles/4" shows up as "/api/2/roles/{role_id}"
			rctx := chi.RouteContext(r.Context())
			p := rctx.RoutePath
			if p == "" && len(rctx.RoutePatterns) > 0 {
				p = rctx.RoutePatterns[0]
			}
			if p == "" {
				p = r.URL.Path
			}
			if r.Method == "" {
				r.Method = "GET"
			}

			tx := sentry.StartTransaction(r.Context(), r.Method+" "+p,
				sentry.WithOpName("http.server"),
				sentry.ContinueFromRequest(r),
				sentry.WithTransactionSource(sentry.SourceRoute))
			tx.Data = map[string]any{
				"http.method": r.Method,
				"httpmethod":  r.Method,
				"http_method": r.Method,
				"method":      r.Method,
			}
			tx.Tags = map[string]string{
				"http.method": r.Method,
				"httpmethod":  r.Method,
				"http_method": r.Method,
				"method":      r.Method,
			}
			defer tx.Finish()
			*r = *r.WithContext(tx.Context())

			next.ServeHTTP(w, r)

			type statusWriter interface{ Status() int }
			ww, ok := w.(statusWriter)
			if ok && ww.Status() > 0 {
				tx.Status = sentry.HTTPtoSpanStatus(ww.Status())
			}
		})
	}
}

Those Data and Tags fields get recorded, but not as the method:

Image


I suppose just GET /api/2/collections/{collection_id} is workable, but it looks very odd.

I'm not sure if I'm doing anything wrong or if it's a bug in the Go library?

Using 0.30.0 of this library. With Go 1.23.4.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions