metrics.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package client
  2. import (
  3. metrics "github.com/rcrowley/go-metrics"
  4. )
  5. const (
  6. sampleSize int = 1028
  7. sampleAlpha float64 = 0.015
  8. )
  9. type ClientMetrics struct {
  10. // metrics
  11. connGauge metrics.Gauge
  12. connMeter metrics.Meter
  13. connTimer metrics.Timer
  14. reqGauge metrics.Gauge
  15. reqMeter metrics.Meter
  16. reqTimer metrics.Timer
  17. proxySetupTimer metrics.Timer
  18. bytesIn metrics.Histogram
  19. bytesOut metrics.Histogram
  20. bytesInCount metrics.Counter
  21. bytesOutCount metrics.Counter
  22. }
  23. func NewClientMetrics() *ClientMetrics {
  24. return &ClientMetrics{
  25. connGauge: metrics.NewGauge(),
  26. connMeter: metrics.NewMeter(),
  27. connTimer: metrics.NewTimer(),
  28. reqGauge: metrics.NewGauge(),
  29. reqMeter: metrics.NewMeter(),
  30. reqTimer: metrics.NewTimer(),
  31. proxySetupTimer: metrics.NewTimer(),
  32. bytesIn: metrics.NewHistogram(metrics.NewExpDecaySample(sampleSize, sampleAlpha)),
  33. bytesOut: metrics.NewHistogram(metrics.NewExpDecaySample(sampleSize, sampleAlpha)),
  34. bytesInCount: metrics.NewCounter(),
  35. bytesOutCount: metrics.NewCounter(),
  36. }
  37. }