aboutsummaryrefslogtreecommitdiff
path: root/echo/middleware/pprof.go
diff options
context:
space:
mode:
Diffstat (limited to 'echo/middleware/pprof.go')
-rw-r--r--echo/middleware/pprof.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/echo/middleware/pprof.go b/echo/middleware/pprof.go
new file mode 100644
index 0000000..cc69505
--- /dev/null
+++ b/echo/middleware/pprof.go
@@ -0,0 +1,38 @@
1package middleware
2
3import (
4 "net/http"
5 "net/http/pprof"
6
7 "github.com/labstack/echo/v4"
8)
9
10func RegisterPprof(e *echo.Echo, prefixOptions ...string) {
11 prefix := "/debug/pprof"
12 if len(prefixOptions) > 0 {
13 prefix = prefixOptions[0]
14 }
15
16 prefixRouter := e.Group(prefix)
17 {
18 prefixRouter.GET("/", pprofAdapter(pprof.Index))
19 prefixRouter.GET("/allocs", pprofAdapter(pprof.Handler("allocs").ServeHTTP))
20 prefixRouter.GET("/block", pprofAdapter(pprof.Handler("block").ServeHTTP))
21 prefixRouter.GET("/cmdline", pprofAdapter(pprof.Cmdline))
22 prefixRouter.GET("/goroutine", pprofAdapter(pprof.Handler("goroutine").ServeHTTP))
23 prefixRouter.GET("/heap", pprofAdapter(pprof.Handler("heap").ServeHTTP))
24 prefixRouter.GET("/mutex", pprofAdapter(pprof.Handler("mutex").ServeHTTP))
25 prefixRouter.GET("/profile", pprofAdapter(pprof.Profile))
26 prefixRouter.POST("/symbol", pprofAdapter(pprof.Symbol))
27 prefixRouter.GET("/symbol", pprofAdapter(pprof.Symbol))
28 prefixRouter.GET("/threadcreate", pprofAdapter(pprof.Handler("threadcreate").ServeHTTP))
29 prefixRouter.GET("/trace", pprofAdapter(pprof.Trace))
30 }
31}
32
33func pprofAdapter(h http.HandlerFunc) echo.HandlerFunc {
34 return func(c echo.Context) error {
35 h.ServeHTTP(c.Response().Writer, c.Request())
36 return nil
37 }
38}