github.com/loomnetwork/gamechain@v0.0.0-20200406110549-36c47eb97a92/oracle/metrics.go (about)

     1  package oracle
     2  
     3  import (
     4  	"fmt"
     5  	"time"
     6  
     7  	"github.com/go-kit/kit/metrics"
     8  	kitprometheus "github.com/go-kit/kit/metrics/prometheus"
     9  	stdprometheus "github.com/prometheus/client_golang/prometheus"
    10  )
    11  
    12  type Metrics struct {
    13  	methodCallCount                metrics.Counter
    14  	methodDuration                 metrics.Histogram
    15  	fetchedPlasmachainEventCount   metrics.Counter
    16  	submittedPlasmachainEventCount metrics.Counter
    17  }
    18  
    19  func NewMetrics(subsystem string) *Metrics {
    20  	const namespace = "gamechain"
    21  
    22  	return &Metrics{
    23  		methodCallCount: kitprometheus.NewCounterFrom(
    24  			stdprometheus.CounterOpts{
    25  				Namespace: namespace,
    26  				Subsystem: subsystem,
    27  				Name:      "method_call_count",
    28  				Help:      "Number of times a method has been invoked.",
    29  			}, []string{"method", "error"}),
    30  		methodDuration: kitprometheus.NewSummaryFrom(
    31  			stdprometheus.SummaryOpts{
    32  				Namespace: namespace,
    33  				Subsystem: subsystem,
    34  				Name:      "method_duration",
    35  				Help:      "How long a method took to execute (in seconds).",
    36  			}, []string{"method", "error"}),
    37  		fetchedPlasmachainEventCount: kitprometheus.NewCounterFrom(
    38  			stdprometheus.CounterOpts{
    39  				Namespace: namespace,
    40  				Subsystem: subsystem,
    41  				Name:      "fetched_plasma_event_count",
    42  				Help:      "Number of Plasmachain events fetched from the Plasmachain.",
    43  			}, []string{"kind"}),
    44  		submittedPlasmachainEventCount: kitprometheus.NewCounterFrom(
    45  			stdprometheus.CounterOpts{
    46  				Namespace: namespace,
    47  				Subsystem: subsystem,
    48  				Name:      "submitted_plasma_event_count",
    49  				Help:      "Number of Plasmachain events successfully submitted to the Gamechain.",
    50  			}, nil),
    51  	}
    52  }
    53  
    54  func (m *Metrics) MethodCalled(begin time.Time, method string, err error) {
    55  	lvs := []string{"method", method, "error", fmt.Sprint(err != nil)}
    56  	m.methodDuration.With(lvs...).Observe(time.Since(begin).Seconds())
    57  	m.methodCallCount.With(lvs...).Add(1)
    58  }
    59  
    60  func (m *Metrics) FetchedPlasmachainEvents(numEvents int, kind string) {
    61  	m.fetchedPlasmachainEventCount.With("kind", kind).Add(float64(numEvents))
    62  }
    63  
    64  func (m *Metrics) SubmittedPlasmachainEvents(numEvents int) {
    65  	m.submittedPlasmachainEventCount.Add(float64(numEvents))
    66  }