netmetrics.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package p2p
  2. import (
  3. gossipv1 "github.com/certusone/wormhole/node/pkg/proto/gossip/v1"
  4. "github.com/certusone/wormhole/node/pkg/vaa"
  5. "github.com/ethereum/go-ethereum/common"
  6. "github.com/libp2p/go-libp2p-core/peer"
  7. "github.com/prometheus/client_golang/prometheus"
  8. "github.com/prometheus/client_golang/prometheus/promauto"
  9. )
  10. var (
  11. wormholeNetworkNodeHeight = promauto.NewGaugeVec(
  12. prometheus.GaugeOpts{
  13. Name: "wormhole_network_node_height",
  14. Help: "Network height of the given guardian node per network",
  15. }, []string{"guardian_addr", "node_id", "node_name", "network"})
  16. wormholeNetworkNodeErrors = promauto.NewGaugeVec(
  17. prometheus.GaugeOpts{
  18. Name: "wormhole_network_node_errors_count",
  19. Help: "Number of errors the given guardian node encountered per network",
  20. }, []string{"guardian_addr", "node_id", "node_name", "network"})
  21. )
  22. func collectNodeMetrics(addr common.Address, peerId peer.ID, hb *gossipv1.Heartbeat) {
  23. for _, n := range hb.Networks {
  24. if n == nil {
  25. continue
  26. }
  27. chain := vaa.ChainID(n.Id)
  28. wormholeNetworkNodeHeight.WithLabelValues(
  29. addr.Hex(), peerId.Pretty(), hb.NodeName, chain.String()).Set(float64(n.Height))
  30. wormholeNetworkNodeErrors.WithLabelValues(
  31. addr.Hex(), peerId.Pretty(), hb.NodeName, chain.String()).Set(float64(n.ErrorCount))
  32. }
  33. }