github.com/MetalBlockchain/metalgo@v1.11.9/snow/networking/handler/metrics.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package handler
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/prometheus/client_golang/prometheus"
    10  )
    11  
    12  type metrics struct {
    13  	expired             *prometheus.CounterVec // op
    14  	messages            *prometheus.CounterVec // op
    15  	lockingTime         prometheus.Gauge
    16  	messageHandlingTime *prometheus.GaugeVec // op
    17  }
    18  
    19  func newMetrics(reg prometheus.Registerer) (*metrics, error) {
    20  	m := &metrics{
    21  		expired: prometheus.NewCounterVec(
    22  			prometheus.CounterOpts{
    23  				Name: "expired",
    24  				Help: "messages dropped because the deadline expired",
    25  			},
    26  			opLabels,
    27  		),
    28  		messages: prometheus.NewCounterVec(
    29  			prometheus.CounterOpts{
    30  				Name: "messages",
    31  				Help: "messages handled",
    32  			},
    33  			opLabels,
    34  		),
    35  		messageHandlingTime: prometheus.NewGaugeVec(
    36  			prometheus.GaugeOpts{
    37  				Name: "message_handling_time",
    38  				Help: "time spent handling messages",
    39  			},
    40  			opLabels,
    41  		),
    42  		lockingTime: prometheus.NewGauge(prometheus.GaugeOpts{
    43  			Name: "locking_time",
    44  			Help: "time spent acquiring the context lock",
    45  		}),
    46  	}
    47  	return m, errors.Join(
    48  		reg.Register(m.expired),
    49  		reg.Register(m.messages),
    50  		reg.Register(m.messageHandlingTime),
    51  		reg.Register(m.lockingTime),
    52  	)
    53  }