forked from TrueCloudLab/neoneo-go
6b4dd5703e
There are no changes visible from the user side (at least for those users who doesn't put Prometheus's or pprof's port in quotes), just internal refactoring. From now and on, BasicService configuration is used by RPC server config, TLS for RPC server, pprof and Prometheus.
36 lines
901 B
Go
36 lines
901 B
Go
package metrics
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/pprof"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/config"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// PprofService https://golang.org/pkg/net/http/pprof/.
|
|
type PprofService Service
|
|
|
|
// NewPprofService creates a new service for gathering pprof metrics.
|
|
func NewPprofService(cfg config.BasicService, log *zap.Logger) *Service {
|
|
if log == nil {
|
|
return nil
|
|
}
|
|
|
|
handler := http.NewServeMux()
|
|
handler.HandleFunc("/debug/pprof/", pprof.Index)
|
|
handler.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
|
|
handler.HandleFunc("/debug/pprof/profile", pprof.Profile)
|
|
handler.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
|
|
handler.HandleFunc("/debug/pprof/trace", pprof.Trace)
|
|
|
|
return &Service{
|
|
Server: &http.Server{
|
|
Addr: cfg.FormatAddress(),
|
|
Handler: handler,
|
|
},
|
|
config: cfg,
|
|
serviceType: "Pprof",
|
|
log: log.With(zap.String("service", "Pprof")),
|
|
}
|
|
}
|