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 }