feat(p2p): add egress/ingress traffic metrics to discv5 udp transport #16369 (#2011)

This commit is contained in:
Daniel Liu 2026-02-06 17:10:23 +08:00 committed by GitHub
parent a46e6a9a25
commit d8ce54db87
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 5 deletions

8
p2p/discv5/metrics.go Normal file
View file

@ -0,0 +1,8 @@
package discv5
import "github.com/XinFinOrg/XDPoSChain/metrics"
var (
ingressTrafficMeter = metrics.NewRegisteredMeter("discv5/InboundTraffic", nil)
egressTrafficMeter = metrics.NewRegisteredMeter("discv5/OutboundTraffic", nil)
)

View file

@ -27,6 +27,7 @@ import (
"github.com/XinFinOrg/XDPoSChain/common"
"github.com/XinFinOrg/XDPoSChain/crypto"
"github.com/XinFinOrg/XDPoSChain/log"
"github.com/XinFinOrg/XDPoSChain/metrics"
"github.com/XinFinOrg/XDPoSChain/p2p/nat"
"github.com/XinFinOrg/XDPoSChain/p2p/netutil"
"github.com/XinFinOrg/XDPoSChain/rlp"
@ -315,18 +316,20 @@ func (t *udp) sendTopicNodes(remote *Node, queryHash common.Hash, nodes []*Node)
}
func (t *udp) sendPacket(toid NodeID, toaddr *net.UDPAddr, ptype byte, req interface{}) (hash []byte, err error) {
//fmt.Println("sendPacket", nodeEvent(ptype), toaddr.String(), toid.String())
packet, hash, err := encodePacket(t.priv, ptype, req)
if err != nil {
//fmt.Println(err)
return hash, err
}
log.Trace(fmt.Sprintf(">>> %v to %x@%v", nodeEvent(ptype), toid[:8], toaddr))
if _, err = t.conn.WriteToUDP(packet, toaddr); err != nil {
if nbytes, err := t.conn.WriteToUDP(packet, toaddr); err != nil {
log.Trace(fmt.Sprint("UDP send failed:", err))
return hash, err
} else {
if metrics.Enabled() {
egressTrafficMeter.Mark(int64(nbytes))
}
}
//fmt.Println(err)
return hash, err
return hash, nil
}
// zeroed padding space for encodePacket.
@ -371,6 +374,9 @@ func (t *udp) readLoop() {
log.Debug(fmt.Sprintf("Read error: %v", err))
return
}
if metrics.Enabled() {
ingressTrafficMeter.Mark(int64(nbytes))
}
t.handlePacket(from, buf[:nbytes])
}
}