@@ -6,6 +6,8 @@ package metrics
6
6
7
7
import (
8
8
"context"
9
+ "os"
10
+ "strconv"
9
11
"time"
10
12
11
13
"github.com/prometheus/client_golang/prometheus"
@@ -15,6 +17,16 @@ import (
15
17
16
18
var noContext = context .Background ()
17
19
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
+
18
30
// Collector defines a metrics collector.
19
31
type Collector interface {
20
32
// TrackServerCreateTime registers the elapsed time it takes
@@ -105,7 +117,9 @@ func New() *Prometheus {
105
117
prometheus .MustRegister (p .countServerCreateErr )
106
118
prometheus .MustRegister (p .countServerInitErr )
107
119
prometheus .MustRegister (p .countServerSetupErr )
108
- prometheus .MustRegister (p .knownInstance )
120
+ if registerKnownServers {
121
+ prometheus .MustRegister (p .knownInstance )
122
+ }
109
123
return p
110
124
}
111
125
@@ -155,22 +169,26 @@ func (m *Prometheus) IncrServerSetupError() {
155
169
156
170
// RegisterKnownInstance registers that we know about a server.
157
171
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
+ }
164
180
}
165
181
166
182
// UnregisterKnownInstance forgets a server we once knew.
167
183
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
+ }
174
192
}
175
193
176
194
// NopCollector provides a no-op metrics collector.
0 commit comments