metric.go 697 B

1234567891011121314151617181920212223242526272829303132333435
  1. package metric
  2. import (
  3. "expvar"
  4. "runtime"
  5. "time"
  6. )
  7. var startTime = time.Now().UTC()
  8. func goroutines() interface{} {
  9. return runtime.NumGoroutine()
  10. }
  11. // uptime is an expvar.Func compliant wrapper for uptime info.
  12. func uptime() interface{} {
  13. uptime := time.Since(startTime)
  14. return int64(uptime)
  15. }
  16. var stats = expvar.NewMap("hookstats")
  17. var (
  18. // Requests count the number of request
  19. Requests expvar.Int
  20. // RequestsFailed count the number of failed request
  21. RequestsFailed expvar.Int
  22. )
  23. func init() {
  24. stats.Set("requests", &Requests)
  25. stats.Set("requests_failed", &RequestsFailed)
  26. expvar.Publish("goroutines", expvar.Func(goroutines))
  27. expvar.Publish("uptime", expvar.Func(uptime))
  28. }