38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"expvar"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
"net/http/pprof"
|
||
|
|
||
|
"github.com/sirupsen/logrus"
|
||
|
"golang.org/x/net/trace"
|
||
|
)
|
||
|
|
||
|
func setupDebugHandlers(addr string) error {
|
||
|
m := http.NewServeMux()
|
||
|
m.Handle("/debug/vars", expvar.Handler())
|
||
|
m.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index))
|
||
|
m.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline))
|
||
|
m.Handle("/debug/pprof/profile", http.HandlerFunc(pprof.Profile))
|
||
|
m.Handle("/debug/pprof/symbol", http.HandlerFunc(pprof.Symbol))
|
||
|
m.Handle("/debug/pprof/trace", http.HandlerFunc(pprof.Trace))
|
||
|
// TODO: reenable after golang.org/x/net update
|
||
|
// m.Handle("/debug/requests", http.HandlerFunc(trace.Traces))
|
||
|
// m.Handle("/debug/events", http.HandlerFunc(trace.Events))
|
||
|
|
||
|
// setting debugaddr is opt-in. permission is defined by listener address
|
||
|
trace.AuthRequest = func(_ *http.Request) (bool, bool) {
|
||
|
return true, true
|
||
|
}
|
||
|
|
||
|
l, err := net.Listen("tcp", addr)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
logrus.Debugf("debug handlers listening at %s", addr)
|
||
|
go http.Serve(l, m)
|
||
|
return nil
|
||
|
}
|