package node import ( "fmt" "github.com/libp2p/go-libp2p/p2p/metricshelper" "github.com/prometheus/client_golang/prometheus" ) var gitVersion = prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "waku_version", Help: "The go-waku version", }, []string{"git_version"}, ) var peerDials = prometheus.NewCounter( prometheus.CounterOpts{ Name: "waku_peers_dials", Help: "Number of peer dials", }) var connectedPeers = prometheus.NewGauge( prometheus.GaugeOpts{ Name: "waku_connected_peers", Help: "Number of connected peers", }) var collectors = []prometheus.Collector{ gitVersion, peerDials, connectedPeers, } // Metrics exposes the functions required to update prometheus metrics for the waku node type Metrics interface { RecordVersion(version string, commit string) RecordDial() RecordPeerConnected() RecordPeerDisconnected() } type metricsImpl struct { reg prometheus.Registerer } func newMetrics(reg prometheus.Registerer) Metrics { metricshelper.RegisterCollectors(reg, collectors...) return &metricsImpl{ reg: reg, } } // RecordVersion registers a metric with the current version and commit of go-waku func (m *metricsImpl) RecordVersion(version string, commit string) { v := fmt.Sprintf("%s-%s", version, commit) gitVersion.WithLabelValues(v).Inc() } // RecordDial increases the counter for the number of dials func (m *metricsImpl) RecordDial() { peerDials.Inc() } // RecordPeerConnected increases the metrics for the number of connected peers func (m *metricsImpl) RecordPeerConnected() { connectedPeers.Inc() } // RecordPeerDisconnected decreases the metrics for the number of connected peers func (m *metricsImpl) RecordPeerDisconnected() { connectedPeers.Dec() }