github.com/MetalBlockchain/metalgo@v1.11.9/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 }