|
|
@@ -0,0 +1,31 @@
|
|
|
+package p2p
|
|
|
+
|
|
|
+import (
|
|
|
+ gossipv1 "github.com/certusone/wormhole/bridge/pkg/proto/gossip/v1"
|
|
|
+ "github.com/certusone/wormhole/bridge/pkg/vaa"
|
|
|
+ "github.com/ethereum/go-ethereum/common"
|
|
|
+ "github.com/libp2p/go-libp2p-core/peer"
|
|
|
+ "github.com/prometheus/client_golang/prometheus"
|
|
|
+ "github.com/prometheus/client_golang/prometheus/promauto"
|
|
|
+)
|
|
|
+
|
|
|
+var (
|
|
|
+ wormholeNetworkNodeHeight = promauto.NewGaugeVec(
|
|
|
+ prometheus.GaugeOpts{
|
|
|
+ Name: "wormhole_network_node_height",
|
|
|
+ Help: "Network height of the given guardian node per network",
|
|
|
+ }, []string{"guardian_addr", "node_id", "node_name", "network"})
|
|
|
+)
|
|
|
+
|
|
|
+func collectNodeMetrics(addr common.Address, peerId peer.ID, hb *gossipv1.Heartbeat) {
|
|
|
+ for _, n := range hb.Networks {
|
|
|
+ if n == nil {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ chain := vaa.ChainID(n.Id)
|
|
|
+
|
|
|
+ wormholeNetworkNodeHeight.WithLabelValues(
|
|
|
+ addr.Hex(), peerId.Pretty(), hb.NodeName, chain.String()).Set(float64(n.Height))
|
|
|
+ }
|
|
|
+}
|