Commit d174a004 authored by metacertain's avatar metacertain Committed by GitHub

feat: Detailed accounting disconnect metrics (#2120)

parent 3a92ef59
...@@ -363,6 +363,7 @@ func (a *Accounting) settle(peer swarm.Address, balance *accountingPeer) error { ...@@ -363,6 +363,7 @@ func (a *Accounting) settle(peer swarm.Address, balance *accountingPeer) error {
acceptedAmount, timestamp, err := a.refreshFunction(context.Background(), peer, paymentAmount, shadowBalance) acceptedAmount, timestamp, err := a.refreshFunction(context.Background(), peer, paymentAmount, shadowBalance)
if err != nil { if err != nil {
a.metrics.AccountingDisconnectsEnforceRefreshCount.Inc()
_ = a.blocklist(peer, 1) _ = a.blocklist(peer, 1)
return fmt.Errorf("refresh failure: %w", err) return fmt.Errorf("refresh failure: %w", err)
} }
...@@ -998,7 +999,7 @@ func (d *debitAction) Apply() error { ...@@ -998,7 +999,7 @@ func (d *debitAction) Apply() error {
if nextBalance.Cmp(a.disconnectLimit) >= 0 { if nextBalance.Cmp(a.disconnectLimit) >= 0 {
// peer too much in debt // peer too much in debt
a.metrics.AccountingDisconnectsCount.Inc() a.metrics.AccountingDisconnectsOverdrawCount.Inc()
disconnectFor, err := a.blocklistUntil(d.peer, 1) disconnectFor, err := a.blocklistUntil(d.peer, 1)
if err != nil { if err != nil {
...@@ -1020,6 +1021,7 @@ func (d *debitAction) Cleanup() { ...@@ -1020,6 +1021,7 @@ func (d *debitAction) Cleanup() {
d.accountingPeer.shadowReservedBalance = new(big.Int).Sub(d.accountingPeer.shadowReservedBalance, d.price) d.accountingPeer.shadowReservedBalance = new(big.Int).Sub(d.accountingPeer.shadowReservedBalance, d.price)
d.accountingPeer.ghostBalance = new(big.Int).Add(d.accountingPeer.ghostBalance, d.price) d.accountingPeer.ghostBalance = new(big.Int).Add(d.accountingPeer.ghostBalance, d.price)
if d.accountingPeer.ghostBalance.Cmp(a.disconnectLimit) > 0 { if d.accountingPeer.ghostBalance.Cmp(a.disconnectLimit) > 0 {
a.metrics.AccountingDisconnectsGhostOverdrawCount.Inc()
_ = a.blocklist(d.peer, 1) _ = a.blocklist(d.peer, 1)
} }
} }
...@@ -1083,6 +1085,7 @@ func (a *Accounting) Connect(peer swarm.Address) { ...@@ -1083,6 +1085,7 @@ func (a *Accounting) Connect(peer swarm.Address) {
timeNow := a.timeNow().Unix() timeNow := a.timeNow().Unix()
if timeNow < accountingPeer.reconnectAllowTimestamp { if timeNow < accountingPeer.reconnectAllowTimestamp {
disconnectFor := accountingPeer.reconnectAllowTimestamp - timeNow disconnectFor := accountingPeer.reconnectAllowTimestamp - timeNow
a.metrics.AccountingDisconnectsReconnectCount.Inc()
_ = a.p2p.Blocklist(peer, time.Duration(disconnectFor)*time.Second) _ = a.p2p.Blocklist(peer, time.Duration(disconnectFor)*time.Second)
} }
} }
......
...@@ -17,7 +17,10 @@ type metrics struct { ...@@ -17,7 +17,10 @@ type metrics struct {
TotalCreditedAmount prometheus.Counter TotalCreditedAmount prometheus.Counter
DebitEventsCount prometheus.Counter DebitEventsCount prometheus.Counter
CreditEventsCount prometheus.Counter CreditEventsCount prometheus.Counter
AccountingDisconnectsCount prometheus.Counter AccountingDisconnectsEnforceRefreshCount prometheus.Counter
AccountingDisconnectsOverdrawCount prometheus.Counter
AccountingDisconnectsGhostOverdrawCount prometheus.Counter
AccountingDisconnectsReconnectCount prometheus.Counter
AccountingBlocksCount prometheus.Counter AccountingBlocksCount prometheus.Counter
AccountingReserveCount prometheus.Counter AccountingReserveCount prometheus.Counter
TotalOriginatedCreditedAmount prometheus.Counter TotalOriginatedCreditedAmount prometheus.Counter
...@@ -52,12 +55,31 @@ func newMetrics() metrics { ...@@ -52,12 +55,31 @@ func newMetrics() metrics {
Name: "credit_events_count", Name: "credit_events_count",
Help: "Number of occurrences of BZZ credit events towards peers", Help: "Number of occurrences of BZZ credit events towards peers",
}), }),
AccountingDisconnectsCount: prometheus.NewCounter(prometheus.CounterOpts{ AccountingDisconnectsEnforceRefreshCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace, Namespace: m.Namespace,
Subsystem: subsystem, Subsystem: subsystem,
Name: "accounting_disconnects_count", Name: "disconnects_enforce_refresh_count",
Help: "Number of occurrences of peers disconnected based on failed refreshment attempts",
}),
AccountingDisconnectsOverdrawCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_overdraw_count",
Help: "Number of occurrences of peers disconnected based on payment thresholds", Help: "Number of occurrences of peers disconnected based on payment thresholds",
}), }),
AccountingDisconnectsGhostOverdrawCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_ghost_overdraw_count",
Help: "Number of occurrences of peers disconnected based on undebitable requests thresholds",
}),
AccountingDisconnectsReconnectCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnects_reconnect_count",
Help: "Number of occurrences of peers disconnected based on early attempt to reconnect",
}),
AccountingBlocksCount: prometheus.NewCounter(prometheus.CounterOpts{ AccountingBlocksCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace, Namespace: m.Namespace,
Subsystem: subsystem, Subsystem: subsystem,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment