https://github.com/go-macaron/toolbox
Package toolbox is a middleware that provides health check, pprof, profile and statistic services for Macaron.
https://github.com/go-macaron/toolbox
go lsif-enabled macaron middleware toolbox
Last synced: 9 months ago
JSON representation
Package toolbox is a middleware that provides health check, pprof, profile and statistic services for Macaron.
- Host: GitHub
- URL: https://github.com/go-macaron/toolbox
- Owner: go-macaron
- License: apache-2.0
- Created: 2014-08-06T02:07:10.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2020-03-31T09:32:09.000Z (almost 6 years ago)
- Last Synced: 2025-03-27T03:01:48.001Z (10 months ago)
- Topics: go, lsif-enabled, macaron, middleware, toolbox
- Language: Go
- Homepage:
- Size: 30.3 KB
- Stars: 20
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# toolbox
[](https://github.com/go-macaron/toolbox/actions?query=workflow%3AGo)
[](https://codecov.io/gh/go-macaron/toolbox)
[](https://pkg.go.dev/github.com/go-macaron/toolbox?tab=doc)
[](https://sourcegraph.com/github.com/go-macaron/toolbox)
Middleware toolbox provides health chcek, pprof, profile and statistic services for [Macaron](https://github.com/go-macaron/macaron).
[API Reference](https://gowalker.org/github.com/go-macaron/toolbox)
### Installation
go get github.com/go-macaron/toolbox
## Usage
```go
// main.go
import (
"gopkg.in/macaron.v1"
"github.com/go-macaron/toolbox"
)
func main() {
m := macaron.Classic()
m.Use(toolbox.Toolboxer(m))
m.Run()
}
```
Open your browser and visit `http://localhost:4000/debug` to see the effects.
## Options
`toolbox.Toolboxer` comes with a variety of configuration options:
```go
type dummyChecker struct {
}
func (dc *dummyChecker) Desc() string {
return "Dummy checker"
}
func (dc *dummyChecker) Check() error {
return nil
}
// ...
m.Use(toolbox.Toolboxer(m, toolbox.Options{
URLPrefix: "/debug", // URL prefix for toolbox dashboard
HealthCheckURL: "/healthcheck", // URL for health check request
HealthCheckers: []HealthChecker{
new(dummyChecker),
}, // Health checkers
HealthCheckFuncs: []*toolbox.HealthCheckFuncDesc{
&toolbox.HealthCheckFuncDesc{
Desc: "Database connection",
Func: func() error { return "OK" },
},
}, // Health check functions
DisableDebug: false, // Turns off all debug functionality when true
PprofURLPrefix: "/debug/pprof/", // URL prefix of pprof
ProfileURLPrefix: "/debug/profile/", // URL prefix of profile
ProfilePath: "profile", // Path store profile files
}))
// ...
```
## Route Statistic
Toolbox also comes with a route call statistic functionality:
```go
import (
"os"
"time"
//...
"github.com/go-macaron/toolbox"
)
func main() {
//...
m.Get("/", func(t toolbox.Toolbox) {
start := time.Now()
// Other operations.
t.AddStatistics("GET", "/", time.Since(start))
})
m.Get("/dump", func(t toolbox.Toolbox) {
t.GetMap(os.Stdout)
})
}
```
Output take from test:
```
+---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
| Request URL | Method | Times | Total Used(s) | Max Used(μs) | Min Used(μs) | Avg Used(μs) |
+---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
| /api/user | POST | 2 | 0.000122 | 120.000000 | 2.000000 | 61.000000 |
| /api/user | GET | 1 | 0.000013 | 13.000000 | 13.000000 | 13.000000 |
| /api/user | DELETE | 1 | 0.000001 | 1.400000 | 1.400000 | 1.400000 |
| /api/admin | POST | 1 | 0.000014 | 14.000000 | 14.000000 | 14.000000 |
| /api/user/unknwon | POST | 1 | 0.000012 | 12.000000 | 12.000000 | 12.000000 |
+---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
```
## License
This project is under Apache v2 License. See the [LICENSE](LICENSE) file for the full license text.