Commit 6177d16c authored by metacertain's avatar metacertain Committed by GitHub

Add basic metrics counters for total sent/recieved pseudosettle amounts (#594)

* Add basic counters for sent/recieved pseudosettle amounts
parent 55397b8a
...@@ -340,6 +340,7 @@ func NewBee(addr string, logger logging.Logger, o Options) (*Bee, error) { ...@@ -340,6 +340,7 @@ func NewBee(addr string, logger logging.Logger, o Options) (*Bee, error) {
debugAPIService.MustRegisterMetrics(p2ps.Metrics()...) debugAPIService.MustRegisterMetrics(p2ps.Metrics()...)
debugAPIService.MustRegisterMetrics(pingPong.Metrics()...) debugAPIService.MustRegisterMetrics(pingPong.Metrics()...)
debugAPIService.MustRegisterMetrics(acc.Metrics()...) debugAPIService.MustRegisterMetrics(acc.Metrics()...)
debugAPIService.MustRegisterMetrics(settlement.Metrics()...)
if apiService != nil { if apiService != nil {
debugAPIService.MustRegisterMetrics(apiService.Metrics()...) debugAPIService.MustRegisterMetrics(apiService.Metrics()...)
......
// Copyright 2020 The Swarm Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package pseudosettle
import (
m "github.com/ethersphere/bee/pkg/metrics"
"github.com/prometheus/client_golang/prometheus"
)
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
}
func newMetrics() metrics {
subsystem := "pseudosettle"
return metrics{
TotalReceivedPseudoSettlements: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "total_received_pseudosettlements",
Help: "Amount of pseudotokens 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)",
}),
}
}
func (s *Service) Metrics() []prometheus.Collector {
return m.PrometheusCollectorsFromFields(s.metrics)
}
...@@ -27,6 +27,7 @@ type Service struct { ...@@ -27,6 +27,7 @@ type Service struct {
streamer p2p.Streamer streamer p2p.Streamer
logger logging.Logger logger logging.Logger
observer settlement.PaymentObserver observer settlement.PaymentObserver
metrics metrics
} }
type Options struct { type Options struct {
...@@ -38,6 +39,7 @@ func New(o Options) *Service { ...@@ -38,6 +39,7 @@ func New(o Options) *Service {
return &Service{ return &Service{
streamer: o.Streamer, streamer: o.Streamer,
logger: o.Logger, logger: o.Logger,
metrics: newMetrics(),
} }
} }
...@@ -68,6 +70,7 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) (e ...@@ -68,6 +70,7 @@ func (s *Service) handler(ctx context.Context, p p2p.Peer, stream p2p.Stream) (e
return fmt.Errorf("read request from peer %v: %w", p.Address, err) return fmt.Errorf("read request from peer %v: %w", p.Address, err)
} }
s.metrics.TotalReceivedPseudoSettlements.Add(float64(req.Amount))
s.logger.Tracef("received payment message from peer %v of %d", p.Address, req.Amount) s.logger.Tracef("received payment message from peer %v of %d", p.Address, req.Amount)
return s.observer.NotifyPayment(p.Address, req.Amount) return s.observer.NotifyPayment(p.Address, req.Amount)
} }
...@@ -94,7 +97,11 @@ func (s *Service) Pay(ctx context.Context, peer swarm.Address, amount uint64) er ...@@ -94,7 +97,11 @@ func (s *Service) Pay(ctx context.Context, peer swarm.Address, amount uint64) er
err = w.WriteMsgWithContext(ctx, &pb.Payment{ err = w.WriteMsgWithContext(ctx, &pb.Payment{
Amount: amount, Amount: amount,
}) })
if err != nil {
return err return err
}
s.metrics.TotalSentPseudoSettlements.Add(float64(amount))
return nil
} }
// SetPaymentObserver sets the payment observer which will be notified of incoming payments // SetPaymentObserver sets the payment observer which will be notified of incoming payments
......
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