metrics.go 935 Bytes
package client

import (
	metrics "github.com/rcrowley/go-metrics"
)

const (
	sampleSize  int     = 1028
	sampleAlpha float64 = 0.015
)

type ClientMetrics struct {
	// metrics
	connGauge       metrics.Gauge
	connMeter       metrics.Meter
	connTimer       metrics.Timer
	proxySetupTimer metrics.Timer
	bytesIn         metrics.Histogram
	bytesOut        metrics.Histogram
	bytesInCount    metrics.Counter
	bytesOutCount   metrics.Counter
}

func NewClientMetrics() *ClientMetrics {
	return &ClientMetrics{
		connGauge:       metrics.NewGauge(),
		connMeter:       metrics.NewMeter(),
		connTimer:       metrics.NewTimer(),
		proxySetupTimer: metrics.NewTimer(),
		bytesIn:         metrics.NewHistogram(metrics.NewExpDecaySample(sampleSize, sampleAlpha)),
		bytesOut:        metrics.NewHistogram(metrics.NewExpDecaySample(sampleSize, sampleAlpha)),
		bytesInCount:    metrics.NewCounter(),
		bytesOutCount:   metrics.NewCounter(),
	}
}