Browse Source

metrics: add a NewLabelMap helper to create and register label maps

Updates tailscale/corp#31174

Signed-off-by: Anton Tolchanov <[email protected]>
Anton Tolchanov 1 month ago
parent
commit
17b0c7bfb3
2 changed files with 10 additions and 7 deletions
  1. 2 7
      cmd/derper/derper.go
  2. 8 0
      metrics/metrics.go

+ 2 - 7
cmd/derper/derper.go

@@ -99,18 +99,13 @@ var (
 )
 
 var (
-	tlsRequestVersion = &metrics.LabelMap{Label: "version"}
-	tlsActiveVersion  = &metrics.LabelMap{Label: "version"}
+	tlsRequestVersion = metrics.NewLabelMap("derper_tls_request_version", "version")
+	tlsActiveVersion  = metrics.NewLabelMap("gauge_derper_tls_active_version", "version")
 )
 
 const setecMeshKeyName = "meshkey"
 const meshKeyEnvVar = "TAILSCALE_DERPER_MESH_KEY"
 
-func init() {
-	expvar.Publish("derper_tls_request_version", tlsRequestVersion)
-	expvar.Publish("gauge_derper_tls_active_version", tlsActiveVersion)
-}
-
 type config struct {
 	PrivateKey key.NodePrivate
 }

+ 8 - 0
metrics/metrics.go

@@ -43,6 +43,14 @@ type LabelMap struct {
 	shardedIntMu syncs.Mutex
 }
 
+// NewLabelMap creates and publishes a new LabelMap metric with the given
+// metric name and label name.
+func NewLabelMap(metric, label string) *LabelMap {
+	m := &LabelMap{Label: label}
+	expvar.Publish(metric, m)
+	return m
+}
+
 // SetInt64 sets the *Int value stored under the given map key.
 func (m *LabelMap) SetInt64(key string, v int64) {
 	m.Get(key).Set(v)