diff options
Diffstat (limited to 'echo/middleware/pprof.go')
-rw-r--r-- | echo/middleware/pprof.go | 38 |
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 @@ | |||
1 | package middleware | ||
2 | |||
3 | import ( | ||
4 | "net/http" | ||
5 | "net/http/pprof" | ||
6 | |||
7 | "github.com/labstack/echo/v4" | ||
8 | ) | ||
9 | |||
10 | func 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 | |||
33 | func 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 | } | ||