|
|
- package v2
-
- import (
- "github.com/go-kit/kit/metrics"
- "github.com/go-kit/kit/metrics/discard"
- "github.com/go-kit/kit/metrics/prometheus"
- stdprometheus "github.com/prometheus/client_golang/prometheus"
- )
-
- const (
- // MetricsSubsystem is a subsystem shared by all metrics exposed by this
- // package.
- MetricsSubsystem = "blockchain"
- )
-
- // Metrics contains metrics exposed by this package.
- type Metrics struct {
- // events_in
- EventsIn metrics.Counter
- // events_in
- EventsHandled metrics.Counter
- // events_out
- EventsOut metrics.Counter
- // errors_in
- ErrorsIn metrics.Counter
- // errors_handled
- ErrorsHandled metrics.Counter
- // errors_out
- ErrorsOut metrics.Counter
- // events_shed
- EventsShed metrics.Counter
- // events_sent
- EventsSent metrics.Counter
- // errors_sent
- ErrorsSent metrics.Counter
- // errors_shed
- ErrorsShed metrics.Counter
- }
-
- // PrometheusMetrics returns metrics for in and out events, errors, etc. handled by routines.
- // Can we burn in the routine name here?
- func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
- labels := []string{}
- for i := 0; i < len(labelsAndValues); i += 2 {
- labels = append(labels, labelsAndValues[i])
- }
- return &Metrics{
- EventsIn: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "events_in",
- Help: "Events read from the channel.",
- }, labels).With(labelsAndValues...),
- EventsHandled: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "events_handled",
- Help: "Events handled",
- }, labels).With(labelsAndValues...),
- EventsOut: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "events_out",
- Help: "Events output from routine.",
- }, labels).With(labelsAndValues...),
- ErrorsIn: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "errors_in",
- Help: "Errors read from the channel.",
- }, labels).With(labelsAndValues...),
- ErrorsHandled: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "errors_handled",
- Help: "Errors handled.",
- }, labels).With(labelsAndValues...),
- ErrorsOut: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "errors_out",
- Help: "Errors output from routine.",
- }, labels).With(labelsAndValues...),
- ErrorsSent: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "errors_sent",
- Help: "Errors sent to routine.",
- }, labels).With(labelsAndValues...),
- ErrorsShed: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "errors_shed",
- Help: "Errors dropped from sending.",
- }, labels).With(labelsAndValues...),
- EventsSent: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "events_sent",
- Help: "Events sent to routine.",
- }, labels).With(labelsAndValues...),
- EventsShed: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
- Namespace: namespace,
- Subsystem: MetricsSubsystem,
- Name: "events_shed",
- Help: "Events dropped from sending.",
- }, labels).With(labelsAndValues...),
- }
- }
-
- // NopMetrics returns no-op Metrics.
- func NopMetrics() *Metrics {
- return &Metrics{
- EventsIn: discard.NewCounter(),
- EventsHandled: discard.NewCounter(),
- EventsOut: discard.NewCounter(),
- ErrorsIn: discard.NewCounter(),
- ErrorsHandled: discard.NewCounter(),
- ErrorsOut: discard.NewCounter(),
- EventsShed: discard.NewCounter(),
- EventsSent: discard.NewCounter(),
- ErrorsSent: discard.NewCounter(),
- ErrorsShed: discard.NewCounter(),
- }
- }
|