github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/services/metrics/pprof.go (about) 1 package metrics 2 3 import ( 4 "net/http" 5 "net/http/pprof" 6 7 "github.com/nspcc-dev/neo-go/pkg/config" 8 "go.uber.org/zap" 9 ) 10 11 // PprofService https://golang.org/pkg/net/http/pprof/. 12 type PprofService Service 13 14 // NewPprofService creates a new service for gathering pprof metrics. 15 func NewPprofService(cfg config.BasicService, log *zap.Logger) *Service { 16 if log == nil { 17 return nil 18 } 19 20 handler := http.NewServeMux() 21 handler.HandleFunc("/debug/pprof/", pprof.Index) 22 handler.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) 23 handler.HandleFunc("/debug/pprof/profile", pprof.Profile) 24 handler.HandleFunc("/debug/pprof/symbol", pprof.Symbol) 25 handler.HandleFunc("/debug/pprof/trace", pprof.Trace) 26 27 addrs := cfg.Addresses 28 srvs := make([]*http.Server, len(addrs)) 29 for i, addr := range addrs { 30 srvs[i] = &http.Server{ 31 Addr: addr, 32 Handler: handler, 33 } 34 } 35 return NewService("Pprof", srvs, cfg, log) 36 }