github.com/ava-labs/avalanchego@v1.11.11/vms/txs/mempool/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 mempool
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/prometheus/client_golang/prometheus"
    10  )
    11  
    12  var _ Metrics = (*metrics)(nil)
    13  
    14  type metrics struct {
    15  	numTxs               prometheus.Gauge
    16  	bytesAvailableMetric prometheus.Gauge
    17  }
    18  
    19  func NewMetrics(namespace string, registerer prometheus.Registerer) (*metrics, error) {
    20  	m := &metrics{
    21  		numTxs: prometheus.NewGauge(prometheus.GaugeOpts{
    22  			Namespace: namespace,
    23  			Name:      "count",
    24  			Help:      "Number of transactions in the mempool",
    25  		}),
    26  		bytesAvailableMetric: prometheus.NewGauge(prometheus.GaugeOpts{
    27  			Namespace: namespace,
    28  			Name:      "bytes_available",
    29  			Help:      "Number of bytes of space currently available in the mempool",
    30  		}),
    31  	}
    32  
    33  	err := errors.Join(
    34  		registerer.Register(m.numTxs),
    35  		registerer.Register(m.bytesAvailableMetric),
    36  	)
    37  
    38  	return m, err
    39  }
    40  
    41  func (m *metrics) Update(numTxs, bytesAvailable int) {
    42  	m.numTxs.Set(float64(numTxs))
    43  	m.bytesAvailableMetric.Set(float64(bytesAvailable))
    44  }