package pprof import ( "net/http/pprof" "github.com/gin-gonic/gin" ) const ( // DefaultPrefix url prefix of pprof DefaultPrefix = "/debug/pprof" ) func getPrefix(prefixOptions ...string) string { prefix := DefaultPrefix if len(prefixOptions) > 0 { prefix = prefixOptions[0] } return prefix } // Register the standard HandlerFuncs from the net/http/pprof package with // the provided gin.Engine. prefixOptions is a optional. If not prefixOptions, // the default path prefix is used, otherwise first prefixOptions will be path prefix. func Register(r *gin.Engine, prefixOptions ...string) { RouteRegister(&(r.RouterGroup), prefixOptions...) } // RouteRegister the standard HandlerFuncs from the net/http/pprof package with // the provided gin.GrouterGroup. prefixOptions is a optional. If not prefixOptions, // the default path prefix is used, otherwise first prefixOptions will be path prefix. func RouteRegister(rg *gin.RouterGroup, prefixOptions ...string) { prefix := getPrefix(prefixOptions...) prefixRouter := rg.Group(prefix) { prefixRouter.GET("/", gin.WrapF(pprof.Index)) prefixRouter.GET("/cmdline", gin.WrapF(pprof.Cmdline)) prefixRouter.GET("/profile", gin.WrapF(pprof.Profile)) prefixRouter.POST("/symbol", gin.WrapF(pprof.Symbol)) prefixRouter.GET("/symbol", gin.WrapF(pprof.Symbol)) prefixRouter.GET("/trace", gin.WrapF(pprof.Trace)) prefixRouter.GET("/allocs", gin.WrapH(pprof.Handler("allocs"))) prefixRouter.GET("/block", gin.WrapH(pprof.Handler("block"))) prefixRouter.GET("/goroutine", gin.WrapH(pprof.Handler("goroutine"))) prefixRouter.GET("/heap", gin.WrapH(pprof.Handler("heap"))) prefixRouter.GET("/mutex", gin.WrapH(pprof.Handler("mutex"))) prefixRouter.GET("/threadcreate", gin.WrapH(pprof.Handler("threadcreate"))) } }