package metrics import ( "time" ) // Increment only metric type Counter interface { Inc() Add(float64) // Only positive } // Increse and decrese metric type Gauge interface { Set(float64) // Introduced discontinuity Inc() Dec() Add(float64) Sub(float64) } type Histogram interface { Observe(float64) // Adds observation to Histogram } type Summary interface { Observe(float64) // Adds observation to Summary } // Consult http://godoc.org/github.com/prometheus/client_golang/prometheus#SummaryOpts type SummaryOpts struct { Objectives map[float64]float64 MaxAge time.Duration AgeBuckets uint32 BufCap uint32 } type Creator interface { Counter() Counter Gauge() Gauge Histogram(buckets []float64) Histogram // opts cannot be nil, use empty summary instance Summary(opts SummaryOpts) Summary }