github.com/onflow/flow-go@v0.35.7-crescendo-preview.23-atree-inlining/module/metrics/node_info.go (about) 1 package metrics 2 3 import ( 4 "strconv" 5 6 "github.com/prometheus/client_golang/prometheus" 7 "github.com/prometheus/client_golang/prometheus/promauto" 8 ) 9 10 // NodeInfoCollector implements metrics to report static information about node. 11 // Such information can include: version, commit, sporkID. 12 type NodeInfoCollector struct { 13 nodeInfo *prometheus.GaugeVec 14 } 15 16 const ( 17 sporkIDLabel = "spork_id" 18 versionLabel = "version" 19 commitLabel = "commit" 20 protocolVersionLabel = "protocol_version" 21 ) 22 23 func NewNodeInfoCollector() *NodeInfoCollector { 24 collector := &NodeInfoCollector{ 25 nodeInfo: promauto.NewGaugeVec(prometheus.GaugeOpts{ 26 Name: "node_info", 27 Namespace: "general", 28 Help: "report general information about node, such information can include version, sporkID, commit hash, etc", 29 }, []string{"key", "value"}), 30 } 31 32 return collector 33 } 34 35 func (sc *NodeInfoCollector) NodeInfo(version, commit, sporkID string, protocolVersion uint) { 36 sc.nodeInfo.WithLabelValues(versionLabel, version) 37 sc.nodeInfo.WithLabelValues(commitLabel, commit) 38 sc.nodeInfo.WithLabelValues(sporkIDLabel, sporkID) 39 sc.nodeInfo.WithLabelValues(protocolVersionLabel, strconv.FormatUint(uint64(protocolVersion), 10)) 40 }