mirror of
https://github.com/ipfs/kubo.git
synced 2026-02-25 12:27:43 +08:00
metrics: add transport label to p2p_peers_total
Gives us per-transport peers counts:
ipfs_p2p_peers_total{transport="/ip4/tcp"} 25
ipfs_p2p_peers_total{transport="/ip6/tcp"} 13
ipfs_p2p_peers_total{transport="/ip6/udp/utp"} 17
License: MIT
Signed-off-by: Lars Gierth <larsg@systemli.org>
This commit is contained in:
parent
41c5e11ab1
commit
05cb7a1bc2
@ -29,7 +29,7 @@ func MetricsCollectionOption(handlerName string) ServeOption {
|
||||
var (
|
||||
peersTotalMetric = prometheus.NewDesc(
|
||||
prometheus.BuildFQName("ipfs", "p2p", "peers_total"),
|
||||
"Number of connected peers", nil, nil)
|
||||
"Number of connected peers", []string{"transport"}, nil)
|
||||
)
|
||||
|
||||
type IpfsNodeCollector struct {
|
||||
@ -41,13 +41,24 @@ func (_ IpfsNodeCollector) Describe(ch chan<- *prometheus.Desc) {
|
||||
}
|
||||
|
||||
func (c IpfsNodeCollector) Collect(ch chan<- prometheus.Metric) {
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
peersTotalMetric,
|
||||
prometheus.GaugeValue,
|
||||
c.PeersTotalValue(),
|
||||
)
|
||||
for tr, val := range c.PeersTotalValues() {
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
peersTotalMetric,
|
||||
prometheus.GaugeValue,
|
||||
val,
|
||||
tr,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
func (c IpfsNodeCollector) PeersTotalValue() float64 {
|
||||
return float64(len(c.Node.PeerHost.Network().Conns()))
|
||||
func (c IpfsNodeCollector) PeersTotalValues() map[string]float64 {
|
||||
vals := make(map[string]float64)
|
||||
for _, conn := range c.Node.PeerHost.Network().Conns() {
|
||||
tr := ""
|
||||
for _, proto := range conn.RemoteMultiaddr().Protocols() {
|
||||
tr = tr + "/" + proto.Name
|
||||
}
|
||||
vals[tr] = vals[tr] + 1
|
||||
}
|
||||
return vals
|
||||
}
|
||||
|
||||
@ -39,8 +39,11 @@ func TestPeersTotal(t *testing.T) {
|
||||
|
||||
node := &core.IpfsNode{PeerHost: hosts[0]}
|
||||
collector := IpfsNodeCollector{Node: node}
|
||||
actual := collector.PeersTotalValue()
|
||||
if actual != 3 {
|
||||
t.Fatalf("expected 3 peers, got %d", int(actual))
|
||||
actual := collector.PeersTotalValues()
|
||||
if len(actual) != 1 {
|
||||
t.Fatalf("expected 1 peers transport, got %d", len(actual))
|
||||
}
|
||||
if actual["/ip4/tcp"] != float64(3) {
|
||||
t.Fatalf("expected 3 peers, got %s", actual["/ip4/tcp"])
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user