42 lines
795 B
Go
42 lines
795 B
Go
// Package metrics is an interface for instrumentation.
|
|
package metrics
|
|
|
|
type Fields map[string]string
|
|
|
|
// Metrics provides a way to instrument application data
|
|
type Metrics interface {
|
|
Counter(id string) Counter
|
|
Gauge(id string) Gauge
|
|
Histogram(id string) Histogram
|
|
String() string
|
|
}
|
|
|
|
type Counter interface {
|
|
// Increment by the given value
|
|
Incr(d uint64)
|
|
// Decrement by the given value
|
|
Decr(d uint64)
|
|
// Reset the counter
|
|
Reset()
|
|
// Label the counter
|
|
WithFields(f Fields) Counter
|
|
}
|
|
|
|
type Gauge interface {
|
|
// Set the gauge value
|
|
Set(d int64)
|
|
// Reset the gauge
|
|
Reset()
|
|
// Label the gauge
|
|
WithFields(f Fields) Gauge
|
|
}
|
|
|
|
type Histogram interface {
|
|
// Record a timing
|
|
Record(d int64)
|
|
// Reset the histogram
|
|
Reset()
|
|
// Label the histogram
|
|
WithFields(f Fields) Histogram
|
|
}
|