Commit fb6688ef authored by acud's avatar acud Committed by GitHub

libp2p: improve metrics (#1166)

parent 82cad4ce
......@@ -373,14 +373,11 @@ func (s *Service) AddProtocol(p p2p.ProtocolSpec) (err error) {
var bpe *p2p.BlockPeerError
if errors.As(err, &bpe) {
if err := s.blocklist.Add(overlay, bpe.Duration()); err != nil {
s.logger.Debugf("blocklist: could blocklist peer %s: %v", peerID, err)
s.logger.Errorf("unable to blocklist peer %v", peerID)
_ = s.Disconnect(overlay)
if err := s.Blocklist(overlay, bpe.Duration()); err != nil {
logger.Debugf("blocklist: could not blocklist peer %s: %v", peerID, err)
logger.Errorf("unable to blocklist peer %v", peerID)
}
s.logger.Tracef("blocklisted a peer %s", peerID)
_ = s.Disconnect(overlay)
logger.Tracef("blocklisted a peer %s", peerID)
}
logger.Debugf("could not handle protocol %s/%s: stream %s: peer %s: error: %v", p.Name, p.Version, ss.Name, overlay, err)
......@@ -421,10 +418,11 @@ func (s *Service) NATManager() basichost.NATManager {
func (s *Service) Blocklist(overlay swarm.Address, duration time.Duration) error {
if err := s.blocklist.Add(overlay, duration); err != nil {
s.logger.Debugf("blocklist: blocklist peer %s: %v", overlay, err)
s.metrics.BlocklistedPeerErrCount.Inc()
_ = s.Disconnect(overlay)
return err
return fmt.Errorf("blocklist peer %s: %v", overlay, err)
}
s.metrics.BlocklistedPeerCount.Inc()
_ = s.Disconnect(overlay)
return nil
......@@ -539,6 +537,7 @@ func (s *Service) Connect(ctx context.Context, addr ma.Multiaddr) (address *bzz.
}
func (s *Service) Disconnect(overlay swarm.Address) error {
s.metrics.DisconnectCount.Inc()
found, peerID := s.peers.remove(overlay)
if !found {
return p2p.ErrPeerNotFound
......
......@@ -13,10 +13,13 @@ type metrics struct {
// all metrics fields must be exported
// to be able to return them by Metrics()
// using reflection
CreatedConnectionCount prometheus.Counter
HandledConnectionCount prometheus.Counter
CreatedStreamCount prometheus.Counter
HandledStreamCount prometheus.Counter
CreatedConnectionCount prometheus.Counter
HandledConnectionCount prometheus.Counter
CreatedStreamCount prometheus.Counter
HandledStreamCount prometheus.Counter
BlocklistedPeerCount prometheus.Counter
BlocklistedPeerErrCount prometheus.Counter
DisconnectCount prometheus.Counter
}
func newMetrics() metrics {
......@@ -47,6 +50,24 @@ func newMetrics() metrics {
Name: "handled_stream_count",
Help: "Number of handled incoming libp2p streams.",
}),
BlocklistedPeerCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "blocklisted_peer_count",
Help: "Number of peers we've blocklisted.",
}),
BlocklistedPeerErrCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "blocklisted_peer_err_count",
Help: "Number of peers we've been unable to blocklist.",
}),
DisconnectCount: prometheus.NewCounter(prometheus.CounterOpts{
Namespace: m.Namespace,
Subsystem: subsystem,
Name: "disconnect_count",
Help: "Number of peers we've disconnected from (initiated locally).",
}),
}
}
......
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