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...), } }