From ba85880c103d8e8e9f5555013cf998d6dd558d54 Mon Sep 17 00:00:00 2001 From: Ralph Pichler Date: Mon, 7 Jun 2021 11:31:54 +0200 Subject: [PATCH] feat: add more metrics to accounting and settlements --- go.mod | 2 +- pkg/accounting/accounting.go | 2 ++ pkg/accounting/metrics.go | 7 +++++++ pkg/settlement/pseudosettle/metrics.go | 18 ++++++++++++++++-- pkg/settlement/pseudosettle/pseudosettle.go | 2 ++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 45f3e5ded78..7e1d9d3297c 100644 --- a/go.mod +++ b/go.mod @@ -76,6 +76,6 @@ require ( gopkg.in/yaml.v2 v2.3.0 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect honnef.co/go/tools v0.0.1-2020.1.4 // indirect - resenje.org/singleflight v0.2.0 // indirect + resenje.org/singleflight v0.2.0 resenje.org/web v0.4.3 ) diff --git a/pkg/accounting/accounting.go b/pkg/accounting/accounting.go index 9285a8a3765..c15fd958569 100644 --- a/pkg/accounting/accounting.go +++ b/pkg/accounting/accounting.go @@ -163,6 +163,8 @@ func (a *Accounting) Reserve(ctx context.Context, peer swarm.Address, price uint accountingPeer.lock.Lock() defer accountingPeer.lock.Unlock() + a.metrics.AccountingReserveCount.Inc() + currentBalance, err := a.Balance(peer) if err != nil { if !errors.Is(err, ErrPeerNoBalance) { diff --git a/pkg/accounting/metrics.go b/pkg/accounting/metrics.go index cfb3a0698da..9b83a1a60d3 100644 --- a/pkg/accounting/metrics.go +++ b/pkg/accounting/metrics.go @@ -19,6 +19,7 @@ type metrics struct { CreditEventsCount prometheus.Counter AccountingDisconnectsCount prometheus.Counter AccountingBlocksCount prometheus.Counter + AccountingReserveCount prometheus.Counter } func newMetrics() metrics { @@ -61,6 +62,12 @@ func newMetrics() metrics { Name: "accounting_blocks_count", Help: "Number of occurrences of temporarily skipping a peer to avoid crossing their disconnect thresholds", }), + AccountingReserveCount: prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: m.Namespace, + Subsystem: subsystem, + Name: "accounting_reserve_count", + Help: "Number of reserve calls", + }), } } diff --git a/pkg/settlement/pseudosettle/metrics.go b/pkg/settlement/pseudosettle/metrics.go index a8c3528833e..b272c9a92f1 100644 --- a/pkg/settlement/pseudosettle/metrics.go +++ b/pkg/settlement/pseudosettle/metrics.go @@ -15,6 +15,8 @@ type metrics struct { // using reflection TotalReceivedPseudoSettlements prometheus.Counter TotalSentPseudoSettlements prometheus.Counter + ReceivedPseudoSettlements prometheus.Counter + SentPseudoSettlements prometheus.Counter } func newMetrics() metrics { @@ -25,13 +27,25 @@ func newMetrics() metrics { Namespace: m.Namespace, Subsystem: subsystem, Name: "total_received_pseudosettlements", - Help: "Amount of pseudotokens received from peers (income of the node)", + Help: "Amount of time settlements received from peers (income of the node)", }), TotalSentPseudoSettlements: prometheus.NewCounter(prometheus.CounterOpts{ Namespace: m.Namespace, Subsystem: subsystem, Name: "total_sent_pseudosettlements", - Help: "Amount of pseudotokens sent to peers (costs paid by the node)", + Help: "Amount of of time settlements sent to peers (costs paid by the node)", + }), + ReceivedPseudoSettlements: prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: m.Namespace, + Subsystem: subsystem, + Name: "received_pseudosettlements", + Help: "Number of time settlements received from peers", + }), + SentPseudoSettlements: prometheus.NewCounter(prometheus.CounterOpts{ + Namespace: m.Namespace, + Subsystem: subsystem, + Name: "sent_pseudosettlements", + Help: "Number of time settlements sent to peers", }), } } diff --git a/pkg/settlement/pseudosettle/pseudosettle.go b/pkg/settlement/pseudosettle/pseudosettle.go index bb748c1fa90..d1903baac2e 100644 --- a/pkg/settlement/pseudosettle/pseudosettle.go +++ b/pkg/settlement/pseudosettle/pseudosettle.go @@ -230,6 +230,7 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) (e receivedPaymentF64, _ := big.NewFloat(0).SetInt(paymentAmount).Float64() s.metrics.TotalReceivedPseudoSettlements.Add(receivedPaymentF64) + s.metrics.ReceivedPseudoSettlements.Inc() return s.accounting.NotifyRefreshmentReceived(p.Address, paymentAmount) } @@ -339,6 +340,7 @@ func (s *Service) Pay(ctx context.Context, peer swarm.Address, amount *big.Int, amountFloat, _ := new(big.Float).SetInt(acceptedAmount).Float64() s.metrics.TotalSentPseudoSettlements.Add(amountFloat) + s.metrics.SentPseudoSettlements.Inc() return acceptedAmount, lastTime.CheckTimestamp, nil }