diff --git a/cmd/derper/derper.go b/cmd/derper/derper.go index 16f531be0..ddf45747a 100644 --- a/cmd/derper/derper.go +++ b/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 } diff --git a/metrics/metrics.go b/metrics/metrics.go index 19966d395..010a32d02 100644 --- a/metrics/metrics.go +++ b/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)