Instrument http request.
go-http_metrics wraps http.Handle or HandleFunc to instrument each http request.
import (
"net/http"
"github.com/sonots/go-http_metrics"
)
func main() {
// http.HandleFunc("/", rootHandleFunc)
http.HandleFunc("/", http_metrics.WrapHandlerFunc("rootHandleFunc", rootHandleFunc))
// http.Handle("/static/", staticHandle)
http.Handle("/static/", http_metrics.WrapHandler("staticHandle", staticHandle))
http_metrics.Print(1) // print metrics on each 1 second
// http_metrics.Verbose = true // if you want to print on each request
// http_metrics.Enable = false // if you want to turn off instrumentation
http.ListenAndServe("0.0.0.0:5050", nil)
}
Output Example (LTSV format):
time:2014-09-08 03:27:50.346193673 +0900 JST handler:rootHandleFunc count:1 max:0.001626 mean:0.001626 min:0.001626 percentile95:0.001626 duration:1
Verbose Output Example (LTSV format):
time:2014-09-08 03:27:50.346193673 +0900 JST handler:rootHandleFunc method:GET path:/ params:foo=bar elapsed:0.001626
Print summarized metrics on each specified second:
http_metrics.Print(60) # 60 seconds
Print metrics on each request:
http_metrics.Verbose = true
Diable instrumentation:
http_metrics.Enable = false
Set an arbitrary callback called on each response as:
http_metrics.OnResponse = func() {
sql_metrics.Flush()
template_metrics.Flush()
}
This example flushes sql_metrics and template_metrics on each request.
- write tests
- Fork (https://github.com/sonots/go-http_metrics/fork)
- Create a feature branch
- Commit your changes
- Rebase your local changes against the master branch
- Create new Pull Request
- See LICENSE