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 {
acceptedAmount, timestamp, err := a.refreshFunction(context.Background(), peer, paymentAmount, shadowBalance)
if err != nil {
a.metrics.AccountingDisconnectsEnforceRefreshCount.Inc()
_ = a.blocklist(peer, 1)
return fmt.Errorf("refresh failure: %w", err)
}
......@@ -998,7 +999,7 @@ func (d *debitAction) Apply() error {
if nextBalance.Cmp(a.disconnectLimit) >= 0 {
// peer too much in debt
a.metrics.AccountingDisconnectsCount.Inc()
a.metrics.AccountingDisconnectsOverdrawCount.Inc()
disconnectFor, err := a.blocklistUntil(d.peer, 1)
if err != nil {
......@@ -1020,6 +1021,7 @@ func (d *debitAction) Cleanup() {
d.accountingPeer.shadowReservedBalance = new(big.Int).Sub(d.accountingPeer.shadowReservedBalance, d.price)
d.accountingPeer.ghostBalance = new(big.Int).Add(d.accountingPeer.ghostBalance, d.price)
if d.accountingPeer.ghostBalance.Cmp(a.disconnectLimit) > 0 {
a.metrics.AccountingDisconnectsGhostOverdrawCount.Inc()
_ = a.blocklist(d.peer, 1)
}
}
......@@ -1083,6 +1085,7 @@ func (a *Accounting) Connect(peer swarm.Address) {
timeNow := a.timeNow().Unix()
if timeNow < accountingPeer.reconnectAllowTimestamp {
disconnectFor := accountingPeer.reconnectAllowTimestamp - timeNow
a.metrics.AccountingDisconnectsReconnectCount.Inc()
_ = a.p2p.Blocklist(peer, time.Duration(disconnectFor)*time.Second)
}
}
......
......@@ -17,7 +17,10 @@ type metrics struct {
TotalCreditedAmount prometheus.Counter
DebitEventsCount prometheus.Counter
CreditEventsCount prometheus.Counter
AccountingDisconnectsCount prometheus.Counter
AccountingDisconnectsEnforceRefreshCount prometheus.Counter
AccountingDisconnectsOverdrawCount prometheus.Counter
AccountingDisconnectsGhostOverdrawCount prometheus.Counter
AccountingDisconnectsReconnectCount prometheus.Counter
AccountingBlocksCount prometheus.Counter
AccountingReserveCount prometheus.Counter
TotalOriginatedCreditedAmount prometheus.Counter
......@@ -52,12 +55,31 @@ func newMetrics() metrics {
Name: "credit_events_count",
Help: "Number of occurrences of BZZ credit events towards peers",
}),
AccountingDisconnectsCount: prometheus.NewCounter(prometheus.CounterOpts{
AccountingDisconnectsEnforceRefreshCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
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",
}),
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{
Namespace: m.Namespace,
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