github.com/MetalBlockchain/metalgo@v1.11.9/snow/networking/router/chain_router_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 router
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/prometheus/client_golang/prometheus"
    10  )
    11  
    12  // routerMetrics about router messages
    13  type routerMetrics struct {
    14  	outstandingRequests   prometheus.Gauge
    15  	longestRunningRequest prometheus.Gauge
    16  	droppedRequests       prometheus.Counter
    17  }
    18  
    19  func newRouterMetrics(registerer prometheus.Registerer) (*routerMetrics, error) {
    20  	rMetrics := &routerMetrics{}
    21  	rMetrics.outstandingRequests = prometheus.NewGauge(
    22  		prometheus.GaugeOpts{
    23  			Name: "outstanding",
    24  			Help: "Number of outstanding requests (all types)",
    25  		},
    26  	)
    27  	rMetrics.longestRunningRequest = prometheus.NewGauge(
    28  		prometheus.GaugeOpts{
    29  			Name: "longest_running",
    30  			Help: "Time (in ns) the longest request took",
    31  		},
    32  	)
    33  	rMetrics.droppedRequests = prometheus.NewCounter(
    34  		prometheus.CounterOpts{
    35  			Name: "dropped",
    36  			Help: "Number of dropped requests (all types)",
    37  		},
    38  	)
    39  
    40  	err := errors.Join(
    41  		registerer.Register(rMetrics.outstandingRequests),
    42  		registerer.Register(rMetrics.longestRunningRequest),
    43  		registerer.Register(rMetrics.droppedRequests),
    44  	)
    45  	return rMetrics, err
    46  }