Skip to content

Commit

Permalink
feat: add more metrics to accounting and settlements (#2013)
Browse files Browse the repository at this point in the history
  • Loading branch information
ralph-pichler committed Jun 7, 2021
1 parent 2c5f15b commit ebedbfe
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 5 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
2 changes: 2 additions & 0 deletions pkg/accounting/accounting.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
7 changes: 7 additions & 0 deletions pkg/accounting/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type metrics struct {
CreditEventsCount prometheus.Counter
AccountingDisconnectsCount prometheus.Counter
AccountingBlocksCount prometheus.Counter
AccountingReserveCount prometheus.Counter
}

func newMetrics() metrics {
Expand Down Expand Up @@ -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",
}),
}
}

Expand Down
36 changes: 32 additions & 4 deletions pkg/settlement/pseudosettle/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ type metrics struct {
// all metrics fields must be exported
// to be able to return them by Metrics()
// using reflection
TotalReceivedPseudoSettlements prometheus.Counter
TotalSentPseudoSettlements prometheus.Counter
TotalReceivedPseudoSettlements prometheus.Counter
TotalSentPseudoSettlements prometheus.Counter
ReceivedPseudoSettlements prometheus.Counter
SentPseudoSettlements prometheus.Counter
ReceivedPseudoSettlementsErrors prometheus.Counter
SentPseudoSettlementsErrors prometheus.Counter
}

func newMetrics() metrics {
Expand All @@ -25,13 +29,37 @@ 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",
}),
ReceivedPseudoSettlementsErrors: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "received_pseudosettlements_errors",
Help: "Errors of time settlements received from peers",
}),
SentPseudoSettlementsErrors: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "sent_pseudosettlements_errorss",
Help: "Errors of time settlements sent to peers",
}),
}
}
Expand Down
9 changes: 9 additions & 0 deletions pkg/settlement/pseudosettle/pseudosettle.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) (e
defer func() {
if err != nil {
_ = stream.Reset()
s.metrics.ReceivedPseudoSettlementsErrors.Inc()
} else {
go stream.FullClose()
}
Expand Down Expand Up @@ -230,6 +231,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)
}

Expand All @@ -240,6 +242,12 @@ func (s *Service) Pay(ctx context.Context, peer swarm.Address, amount *big.Int,

var err error

defer func() {
if err != nil {
s.metrics.ReceivedPseudoSettlementsErrors.Inc()
}
}()

var lastTime lastPayment
err = s.store.Get(totalKey(peer, SettlementSentPrefix), &lastTime)
if err != nil {
Expand Down Expand Up @@ -339,6 +347,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
}
Expand Down

0 comments on commit ebedbfe

Please sign in to comment.