mirror of
https://github.com/datarhei/core.git
synced 2025-09-27 04:16:25 +08:00
50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/pprof"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
// The ProfilingHandler type provides a function to register the porfiling endpoints
|
|
type ProfilingHandler struct{}
|
|
|
|
// NewProfiling returns a new Profiling type
|
|
func NewProfiling() *ProfilingHandler {
|
|
return &ProfilingHandler{}
|
|
}
|
|
|
|
// Register registers the different golang profiling endpoinds with a router
|
|
// @Summary Retrieve profiling data from the application
|
|
// @Description Retrieve profiling data from the application
|
|
// @ID profiling
|
|
// @Produce text/html
|
|
// @Success 200 {string} string
|
|
// @Failure 404 {string} string
|
|
// @Router /profiling [get]
|
|
func (p *ProfilingHandler) Register(r *echo.Group) {
|
|
r.GET("/", p.handler(pprof.Index))
|
|
r.GET("/cmdline", p.handler(pprof.Cmdline))
|
|
r.GET("/profile", p.handler(pprof.Profile))
|
|
r.POST("/symbol", p.handler(pprof.Symbol))
|
|
r.GET("/symbol", p.handler(pprof.Symbol))
|
|
r.GET("/trace", p.handler(pprof.Trace))
|
|
r.GET("/allocs", p.handler(pprof.Handler("allocs").ServeHTTP))
|
|
r.GET("/block", p.handler(pprof.Handler("block").ServeHTTP))
|
|
r.GET("/goroutine", p.handler(pprof.Handler("goroutine").ServeHTTP))
|
|
r.GET("/heap", p.handler(pprof.Handler("heap").ServeHTTP))
|
|
r.GET("/mutex", p.handler(pprof.Handler("mutex").ServeHTTP))
|
|
r.GET("/threadcreate", p.handler(pprof.Handler("threadcreate").ServeHTTP))
|
|
}
|
|
|
|
func (p *ProfilingHandler) handler(h http.HandlerFunc) echo.HandlerFunc {
|
|
handler := http.HandlerFunc(h)
|
|
|
|
return func(c echo.Context) error {
|
|
handler.ServeHTTP(c.Response(), c.Request())
|
|
|
|
return nil
|
|
}
|
|
}
|