add metrics

This commit is contained in:
tycho garen
2022-06-14 07:03:07 -04:00
parent 0a0425ae6f
commit 9532fa4eb7
4 changed files with 30 additions and 4 deletions
+16 -2
View File
@@ -28,7 +28,10 @@ var (
// Metrics contains metrics exposed by this package.
type Metrics struct {
// Number of peers.
Peers metrics.Gauge
Peers metrics.Gauge
PeersStored metrics.Gauge
PeersInactivated metrics.Gauge
// Number of bytes received from a given peer.
PeerReceiveBytesTotal metrics.Counter
// Number of bytes sent to a given peer.
@@ -75,7 +78,18 @@ func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics {
Name: "peers",
Help: "Number of peers.",
}, labels).With(labelsAndValues...),
PeersStored: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: namespace,
Subsystem: MetricsSubsystem,
Name: "peers_stored",
Help: "Number of peers in the peer Store",
}, labels).With(labelsAndValues...),
PeersInactivated: prometheus.NewGaugeFrom(stdprometheus.GaugeOpts{
Namespace: namespace,
Subsystem: MetricsSubsystem,
Name: "peers_inactivated",
Help: "Number of peers inactivated",
}, labels).With(labelsAndValues...),
PeerReceiveBytesTotal: prometheus.NewCounterFrom(stdprometheus.CounterOpts{
Namespace: namespace,
Subsystem: MetricsSubsystem,
+11 -1
View File
@@ -163,6 +163,9 @@ type PeerManagerOptions struct {
// persistentPeers provides fast PersistentPeers lookups. It is built
// by optimize().
persistentPeers map[types.NodeID]bool
// Peer Metrics
Metrics *Metrics
}
// Validate validates the options.
@@ -400,6 +403,7 @@ func (m *PeerManager) prunePeers() error {
if err := m.store.Delete(peerID); err != nil {
return err
}
m.options.Metrics.PeersStored.Add(-1)
}
}
return nil
@@ -437,6 +441,8 @@ func (m *PeerManager) Add(address NodeAddress) (bool, error) {
if err := m.store.Set(peer); err != nil {
return false, err
}
m.options.Metrics.PeersStored.Add(1)
if err := m.prunePeers(); err != nil {
return true, err
}
@@ -614,7 +620,11 @@ func (m *PeerManager) Dialed(address NodeAddress) error {
return fmt.Errorf("peer %q was removed while dialing", address.NodeID)
}
now := time.Now().UTC()
if peer.Inactive {
m.options.Metrics.PeersInactivated.Add(-1)
}
peer.Inactive = false
peer.LastConnected = now
if addressInfo, ok := peer.AddressInfo[address]; ok {
addressInfo.DialFailures = 0
@@ -835,7 +845,7 @@ func (m *PeerManager) Inactivate(peerID types.NodeID) error {
}
peer.Inactive = true
m.options.Metrics.PeersInactivated.Add(1)
return m.store.Set(*peer)
}