Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8ee3814

Browse files
committedJul 21, 2022
Add feature flag DRONE_AUTOSCALER_REGISTER_KNOWN_SERVERS
Only expose the new metrics when this variable is set
1 parent b5f8ab0 commit 8ee3814

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed
 

‎metrics/metrics.go

+31-13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ package metrics
66

77
import (
88
"context"
9+
"os"
10+
"strconv"
911
"time"
1012

1113
"github.com/prometheus/client_golang/prometheus"
@@ -15,6 +17,16 @@ import (
1517

1618
var noContext = context.Background()
1719

20+
// this is a feature flag that can be used to enable
21+
// metrics to track registering/unregistering of servers
22+
var registerKnownServers = false
23+
24+
func init() {
25+
registerKnownServers, _ = strconv.ParseBool(
26+
os.Getenv("DRONE_AUTOSCALER_REGISTER_KNOWN_SERVERS"),
27+
)
28+
}
29+
1830
// Collector defines a metrics collector.
1931
type Collector interface {
2032
// TrackServerCreateTime registers the elapsed time it takes
@@ -105,7 +117,9 @@ func New() *Prometheus {
105117
prometheus.MustRegister(p.countServerCreateErr)
106118
prometheus.MustRegister(p.countServerInitErr)
107119
prometheus.MustRegister(p.countServerSetupErr)
108-
prometheus.MustRegister(p.knownInstance)
120+
if registerKnownServers {
121+
prometheus.MustRegister(p.knownInstance)
122+
}
109123
return p
110124
}
111125

@@ -155,22 +169,26 @@ func (m *Prometheus) IncrServerSetupError() {
155169

156170
// RegisterKnownInstance registers that we know about a server.
157171
func (m *Prometheus) RegisterKnownInstance(instance *autoscaler.Instance) {
158-
m.knownInstance.With(prometheus.Labels{
159-
"name": instance.Name,
160-
"provider": string(instance.Provider),
161-
"region": instance.Region,
162-
"size": instance.Size,
163-
}).Set(1)
172+
if registerKnownServers {
173+
m.knownInstance.With(prometheus.Labels{
174+
"name": instance.Name,
175+
"provider": string(instance.Provider),
176+
"region": instance.Region,
177+
"size": instance.Size,
178+
}).Set(1)
179+
}
164180
}
165181

166182
// UnregisterKnownInstance forgets a server we once knew.
167183
func (m *Prometheus) UnregisterKnownInstance(instance *autoscaler.Instance) {
168-
m.knownInstance.Delete(prometheus.Labels{
169-
"name": instance.Name,
170-
"provider": string(instance.Provider),
171-
"region": instance.Region,
172-
"size": instance.Size,
173-
})
184+
if registerKnownServers {
185+
m.knownInstance.Delete(prometheus.Labels{
186+
"name": instance.Name,
187+
"provider": string(instance.Provider),
188+
"region": instance.Region,
189+
"size": instance.Size,
190+
})
191+
}
174192
}
175193

176194
// NopCollector provides a no-op metrics collector.

0 commit comments

Comments
 (0)
Please sign in to comment.