func debugHandler() http.Handler { debugRouter := http.NewServeMux() debugRouter.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index)) debugRouter.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline)) debugRouter.Handle("/debug/pprof/profile", http.HandlerFunc(pprof.Profile)) debugRouter.Handle("/debug/pprof/symbol", http.HandlerFunc(pprof.Symbol)) debugRouter.Handle("/debug/pprof/trace", http.HandlerFunc(pprof.Trace)) debugRouter.HandleFunc("/debug/requests", func(w http.ResponseWriter, req *http.Request) { any, sensitive := trace.AuthRequest(req) if !any { http.Error(w, "not allowed", http.StatusUnauthorized) return } w.Header().Set("Content-Type", "text/html; charset=utf-8") trace.Render(w, req, sensitive) }) debugRouter.HandleFunc("/debug/events", func(w http.ResponseWriter, req *http.Request) { any, sensitive := trace.AuthRequest(req) if !any { http.Error(w, "not allowed", http.StatusUnauthorized) return } w.Header().Set("Content-Type", "text/html; charset=utf-8") trace.RenderEvents(w, req, sensitive) }) return debugRouter }
// DebugEvents serves the /debug/events endpoint. func (h *Handler) DebugEvents(p httprequest.Params, r *DebugEventsRequest) error { sensitive, err := h.checkTraceAllowed(p.Request) if err != nil { return errgo.Mask(err, errgo.Any) } trace.RenderEvents(p.Response, p.Request, sensitive) return nil }