Skip to content

sonots/go-http_metrics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-http_metrics

Instrument http request.

go-http_metrics wraps http.Handle or HandleFunc to instrument each http request.

Usage

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

API

Print

Print summarized metrics on each specified second:

http_metrics.Print(60) # 60 seconds

Verbose

Print metrics on each request:

http_metrics.Verbose = true

Enable

Diable instrumentation:

http_metrics.Enable = false

OnResponse

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.

ToDo

  • write tests

Contribution

Copyright

About

Instrument http request

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages