package eventlog
|
|
|
|
import (
|
|
"github.com/go-kit/kit/metrics/prometheus"
|
|
stdprometheus "github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
// gauge is the subset of the Prometheus gauge interface used here.
|
|
type gauge interface {
|
|
Set(float64)
|
|
}
|
|
|
|
// Metrics define the metrics exported by the eventlog package.
|
|
type Metrics struct {
|
|
numItemsGauge gauge
|
|
}
|
|
|
|
// discard is a no-op implementation of the gauge interface.
|
|
type discard struct{}
|
|
|
|
func (discard) Set(float64) {}
|
|
|
|
const eventlogSubsystem = "eventlog"
|
|
|
|
// PrometheusMetrics returns a collection of eventlog metrics for Prometheus.
|
|
func PrometheusMetrics(ns string, fields ...string) *Metrics {
|
|
var labels []string
|
|
for i := 0; i < len(fields); i += 2 {
|
|
labels = append(labels, fields[i])
|
|
}
|
|
return &Metrics{
|
|
numItemsGauge: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
|
|
Namespace: ns,
|
|
Subsystem: eventlogSubsystem,
|
|
Name: "num_items",
|
|
Help: "Number of items currently resident in the event log.",
|
|
}, labels).With(fields...),
|
|
}
|
|
}
|