forked from inconshreveable/ngrok
/
metrics.go
35 lines (31 loc) · 935 Bytes
/
metrics.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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(),
}
}