vmpooler 0.14.2 → 0.14.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b0e071edb016f25c0379ebc2d7768e945096333d9be2f1f31ce66fc32474fd1
4
- data.tar.gz: 1bbac7250090c48a74bf671d316cb9aa45d1dc55af1f69351e9afd27f7c4ed9d
3
+ metadata.gz: d003f57422358d9da10997380e2c5d19d4954b8325b3b3655b04d2c55896b3b4
4
+ data.tar.gz: 895953f29cf0f7a86a782bb54721e14e77590c3f75a01a4f5d169d9428075528
5
5
  SHA512:
6
- metadata.gz: 21bc1b2a3c83e82a2e4f3ad6f54a41a380a76a331ca8613b49acf0f7cd2df6ff69162e600f7d449e482e110d1ac7e3e5d9534cd1479d990dd4ff4f8c2c079b74
7
- data.tar.gz: 109ae1cbfa75cc80a3afff19938677856f9ac0fd858cb546d6ea42b8dbbddf515cad3cdb6cfcb340addbe863c5ee1fc9c4025704bdb298584a7ab8696dd27de9
6
+ metadata.gz: f8182359a75a3e6630b20700e6ce8dece058208b59789564203a9023858ca1ea39fa309dadbd175c9d54e62408e5a1b0ffdd8490152819c2bfda74b3b1089dbf
7
+ data.tar.gz: 1caad1d0bffacab27a64fe703dcf1c48033733cb9b053e7a0813ca232254ff843c58dfe8f53df4c13b9e91014c862662ca8e2c7c2f956e7b04b781dbf09db7bc
@@ -38,8 +38,8 @@ module Vmpooler
38
38
  # Using customised collector that filters out hostnames on API paths
39
39
  require 'vmpooler/metrics/promstats/collector_middleware'
40
40
  require 'prometheus/middleware/exporter'
41
- use Vmpooler::Metrics::Promstats::CollectorMiddleware, metrics_prefix: "#{metrics.metrics_prefix}_http"
42
- use Prometheus::Middleware::Exporter, path: metrics.endpoint
41
+ use Vmpooler::Metrics::Promstats::CollectorMiddleware, metrics_prefix: "#{metrics.prometheus_prefix}_http"
42
+ use Prometheus::Middleware::Exporter, path: metrics.prometheus_endpoint
43
43
  end
44
44
 
45
45
  if torun.include? :api
@@ -89,18 +89,16 @@ module Vmpooler
89
89
  template_backends += aliases
90
90
  weighted_pools = get_pool_weights(template_backends)
91
91
 
92
- pickup = Pickup.new(weighted_pools) if weighted_pools.count == template_backends.count
93
- count.to_i.times do
94
- if pickup
92
+ if weighted_pools.count > 1 && weighted_pools.count == template_backends.count
93
+ pickup = Pickup.new(weighted_pools)
94
+ count.to_i.times do
95
95
  selection << pickup.pick
96
- else
96
+ end
97
+ else
98
+ count.to_i.times do
97
99
  selection << template_backends.sample
98
100
  end
99
101
  end
100
- else
101
- count.to_i.times do
102
- selection << template
103
- end
104
102
  end
105
103
 
106
104
  count_selection(selection)
@@ -809,7 +807,7 @@ module Vmpooler
809
807
 
810
808
  post "#{api_prefix}/ondemandvm/?" do
811
809
  content_type :json
812
- metrics.increment('api_vm.post.ondemand.requestid')
810
+ metrics.increment('http_requests_vm_total.post.ondemand.requestid')
813
811
 
814
812
  need_token! if Vmpooler::API.settings.config[:auth]
815
813
 
@@ -847,7 +845,7 @@ module Vmpooler
847
845
  post "#{api_prefix}/ondemandvm/:template/?" do
848
846
  content_type :json
849
847
  result = { 'ok' => false }
850
- metrics.increment('api_vm.delete.ondemand.template')
848
+ metrics.increment('http_requests_vm_total.delete.ondemand.template')
851
849
 
852
850
  need_token! if Vmpooler::API.settings.config[:auth]
853
851
 
@@ -874,7 +872,7 @@ module Vmpooler
874
872
 
875
873
  get "#{api_prefix}/ondemandvm/:requestid/?" do
876
874
  content_type :json
877
- metrics.increment('api_vm.get.ondemand.request')
875
+ metrics.increment('http_requests_vm_total.get.ondemand.request')
878
876
 
879
877
  status 404
880
878
  result = check_ondemand_request(params[:requestid])
@@ -885,7 +883,7 @@ module Vmpooler
885
883
  delete "#{api_prefix}/ondemandvm/:requestid/?" do
886
884
  content_type :json
887
885
  need_token! if Vmpooler::API.settings.config[:auth]
888
- metrics.increment('api_vm.delete.ondemand.request')
886
+ metrics.increment('http_requests_vm_total.delete.ondemand.request')
889
887
 
890
888
  status 404
891
889
  result = delete_ondemand_request(params[:requestid])
@@ -896,7 +894,7 @@ module Vmpooler
896
894
  post "#{api_prefix}/vm/?" do
897
895
  content_type :json
898
896
  result = { 'ok' => false }
899
- metrics.increment('api_vm.post.vm.checkout')
897
+ metrics.increment('http_requests_vm_total.post.vm.checkout')
900
898
 
901
899
  payload = JSON.parse(request.body.read)
902
900
 
@@ -1051,7 +1049,7 @@ module Vmpooler
1051
1049
  post "#{api_prefix}/vm/:template/?" do
1052
1050
  content_type :json
1053
1051
  result = { 'ok' => false }
1054
- metrics.increment('api_vm.get.vm.template')
1052
+ metrics.increment('http_requests_vm_total.get.vm.template')
1055
1053
 
1056
1054
  payload = extract_templates_from_query_params(params[:template])
1057
1055
 
@@ -1075,7 +1073,7 @@ module Vmpooler
1075
1073
 
1076
1074
  get "#{api_prefix}/vm/:hostname/?" do
1077
1075
  content_type :json
1078
- metrics.increment('api_vm.get.vm.hostname')
1076
+ metrics.increment('http_requests_vm_total.get.vm.hostname')
1079
1077
 
1080
1078
  result = {}
1081
1079
 
@@ -1148,7 +1146,7 @@ module Vmpooler
1148
1146
 
1149
1147
  delete "#{api_prefix}/vm/:hostname/?" do
1150
1148
  content_type :json
1151
- metrics.increment('api_vm.delete.vm.hostname')
1149
+ metrics.increment('http_requests_vm_total.delete.vm.hostname')
1152
1150
 
1153
1151
  result = {}
1154
1152
 
@@ -1177,7 +1175,7 @@ module Vmpooler
1177
1175
 
1178
1176
  put "#{api_prefix}/vm/:hostname/?" do
1179
1177
  content_type :json
1180
- metrics.increment('api_vm.put.vm.modify')
1178
+ metrics.increment('http_requests_vm_total.put.vm.modify')
1181
1179
 
1182
1180
  status 404
1183
1181
  result = { 'ok' => false }
@@ -1254,7 +1252,7 @@ module Vmpooler
1254
1252
 
1255
1253
  post "#{api_prefix}/vm/:hostname/disk/:size/?" do
1256
1254
  content_type :json
1257
- metrics.increment('api_vm.post.vm.disksize')
1255
+ metrics.increment('http_requests_vm_total.post.vm.disksize')
1258
1256
 
1259
1257
  need_token! if Vmpooler::API.settings.config[:auth]
1260
1258
 
@@ -1278,7 +1276,7 @@ module Vmpooler
1278
1276
 
1279
1277
  post "#{api_prefix}/vm/:hostname/snapshot/?" do
1280
1278
  content_type :json
1281
- metrics.increment('api_vm.post.vm.snapshot')
1279
+ metrics.increment('http_requests_vm_total.post.vm.snapshot')
1282
1280
 
1283
1281
  need_token! if Vmpooler::API.settings.config[:auth]
1284
1282
 
@@ -1304,7 +1302,7 @@ module Vmpooler
1304
1302
 
1305
1303
  post "#{api_prefix}/vm/:hostname/snapshot/:snapshot/?" do
1306
1304
  content_type :json
1307
- metrics.increment('api_vm.post.vm.disksize')
1305
+ metrics.increment('http_requests_vm_total.post.vm.disksize')
1308
1306
 
1309
1307
  need_token! if Vmpooler::API.settings.config[:auth]
1310
1308
 
@@ -5,7 +5,7 @@ require 'prometheus/client'
5
5
  module Vmpooler
6
6
  class Metrics
7
7
  class Promstats < Metrics
8
- attr_reader :prefix, :endpoint, :metrics_prefix
8
+ attr_reader :prefix, :prometheus_endpoint, :prometheus_prefix
9
9
 
10
10
  # Constants for Metric Types
11
11
  M_COUNTER = 1
@@ -24,22 +24,135 @@ module Vmpooler
24
24
 
25
25
  def initialize(logger, params = {})
26
26
  @prefix = params['prefix'] || 'vmpooler'
27
- @metrics_prefix = params['metrics_prefix'] || 'vmpooler'
28
- @endpoint = params['endpoint'] || '/prometheus'
27
+ @prometheus_prefix = params['prometheus_prefix'] || 'vmpooler'
28
+ @prometheus_endpoint = params['prometheus_endpoint'] || '/prometheus'
29
29
  @logger = logger
30
30
 
31
31
  # Setup up prometheus registry and data structures
32
32
  @prometheus = Prometheus::Client.registry
33
33
  end
34
34
 
35
- # Metrics structure used to register the metrics and also translate/interpret the incoming metrics.
35
+ =begin # rubocop:disable Style/BlockComments
36
+ The Metrics table is used to register metrics and translate/interpret the incoming metrics.
37
+
38
+ This table describes all of the prometheus metrics that are recognised by the application.
39
+ The background documentation for defining metrics is at: https://prometheus.io/docs/introduction/
40
+ In particular, the naming practices should be adhered to: https://prometheus.io/docs/practices/naming/
41
+ The Ruby Client docs are also useful: https://github.com/prometheus/client_ruby
42
+
43
+ The table here allows the currently used stats definitions to be translated correctly for Prometheus.
44
+ The current format is of the form A.B.C, where the final fields may be actual values (e.g. poolname).
45
+ Prometheus metrics cannot use the '.' as a character, so this is either translated into '_' or
46
+ variable parameters are expressed as labels accompanying the metric.
47
+
48
+ Sample statistics are:
49
+ # Example showing hostnames (FQDN)
50
+ migrate_from.pix-jj26-chassis1-2.ops.puppetlabs.net
51
+ migrate_to.pix-jj26-chassis1-8.ops.puppetlabs.net
52
+
53
+ # Example showing poolname as a parameter
54
+ poolreset.invalid.centos-8-x86_64
55
+
56
+ # Examples showing similar sub-typed checkout stats
57
+ checkout.empty.centos-8-x86_64
58
+ checkout.invalid.centos-8-x86_64
59
+ checkout.invalid.unknown
60
+ checkout.success.centos-8-x86_64
61
+
62
+ # Stats without any final parameter.
63
+ connect.fail
64
+ connect.open
65
+ delete.failed
66
+ delete.success
67
+
68
+ # Stats with multiple param_labels
69
+ vmpooler_user.debian-8-x86_64-pixa4.john
70
+
71
+ The metrics implementation here preserves the existing framework which will continue to support
72
+ graphite and statsd (since vmpooler is used outside of puppet). Some rationalisation and renaming
73
+ of the actual metrics was done to get a more usable model to fit within the prometheus framework.
74
+ This particularly applies to the user stats collected once individual machines are terminated as
75
+ this would have challenged prometheus' ability due to multiple (8) parameters being collected
76
+ in a single measure (which has a very high cardinality).
77
+
78
+ Prometheus requires all metrics to be pre-registered (which is the primary reason for this
79
+ table) and also uses labels to differentiate the characteristics of the measurement. This
80
+ is used throughout to capture information such as poolnames. So for example, this is a sample
81
+ of the prometheus metrics generated for the "vmpooler_ready" measurement:
82
+
83
+ # TYPE vmpooler_ready gauge
84
+ # HELP vmpooler_ready vmpooler number of machines in ready State
85
+ vmpooler_ready{vmpooler_instance="vmpooler",poolname="win-10-ent-x86_64-pixa4"} 2.0
86
+ vmpooler_ready{vmpooler_instance="vmpooler",poolname="debian-8-x86_64-pixa4"} 2.0
87
+ vmpooler_ready{vmpooler_instance="vmpooler",poolname="centos-8-x86_64-pixa4"} 2.0
88
+
89
+ Prometheus supports the following metric types:
90
+ (see https://prometheus.io/docs/concepts/metric_types/)
91
+
92
+ Counter (increment):
93
+ A counter is a cumulative metric that represents a single monotonically increasing counter whose
94
+ value can only increase or be reset to zero on restart
95
+
96
+ Gauge:
97
+ A gauge is a metric that represents a single numerical value that can arbitrarily go up and down.
98
+
99
+ Histogram:
100
+ A histogram samples observations (usually things like request durations or response sizes) and
101
+ counts them in configurable buckets. It also provides a sum of all observed values.
102
+ This replaces the timer metric supported by statsd
103
+
104
+ Summary :
105
+ Summary provides a total count of observations and a sum of all observed values, it calculates
106
+ configurable quantiles over a sliding time window.
107
+ (Summary is not used in vmpooler)
108
+
109
+ vmpooler_metrics_table is a table of hashes, where the hash key represents the first part of the
110
+ metric name, e.g. for the metric 'delete.*' (see above) the key would be 'delete:'. "Sub-metrics",
111
+ are supported, again for the 'delete.*' example, this can be subbed into '.failed' and '.success'
112
+
113
+ The entries within the hash as are follows:
114
+
115
+ mtype:
116
+ Metric type, which is one of the following constants:
117
+ M_COUNTER = 1
118
+ M_GAUGE = 2
119
+ M_SUMMARY = 3
120
+ M_HISTOGRAM = 4
121
+
122
+ torun:
123
+ Indicates which process the metric is for - within vmpooler this is either ':api' or ':manager'
124
+ (there is a suggestion that we change this to two separate tables).
125
+
126
+ docstring:
127
+ Documentation string for the metric - this is displayed as HELP text by the endpoint.
128
+
129
+ metric_suffixes:
130
+ Array of sub-metrics of the form 'sub-metric: "doc-string for sub-metric"'. This supports
131
+ the generation of individual sub-metrics for all elements in the array.
132
+
133
+ param_labels:
134
+ This is an optional array of symbols for the final labels in a metric. It should not be
135
+ specified if there are no additional parameters.
136
+
137
+ If it specified, it can either be a single symbol, or two or more symbols. The treatment
138
+ differs if there is only one symbol given as all of the remainder of the metric string
139
+ supplied is collected into a label with the symbol name. This allows the handling of
140
+ node names (FQDN).
141
+
142
+ To illustrate:
143
+ 1. In the 'connect.*' or 'delete.*' example above, it should not be specified.
144
+ 2. For the 'migrate_from.*' example above, the remainder of the measure is collected
145
+ as the 'host_name' label.
146
+ 3. For the 'vmpooler_user' example above, the first parameter is treated as the pool
147
+ name, and the second as the username.
148
+
149
+ =end
36
150
  def vmpooler_metrics_table
37
151
  {
38
152
  errors: {
39
153
  mtype: M_COUNTER,
40
154
  torun: %i[manager],
41
155
  docstring: 'Count of errors for pool',
42
- prom_metric_prefix: "#{@metrics_prefix}_errors",
43
156
  metric_suffixes: {
44
157
  markedasfailed: 'timeout waiting for instance to initialise',
45
158
  duplicatehostname: 'unable to create instance due to duplicate hostname',
@@ -51,42 +164,36 @@ module Vmpooler
51
164
  mtype: M_COUNTER,
52
165
  torun: %i[manager],
53
166
  docstring: 'Number of pool instances this user created created',
54
- prom_metric_prefix: "#{@metrics_prefix}_user",
55
167
  param_labels: %i[user poolname]
56
168
  },
57
169
  usage_litmus: {
58
170
  mtype: M_COUNTER,
59
171
  torun: %i[manager],
60
172
  docstring: 'Pools by Litmus job usage',
61
- prom_metric_prefix: "#{@metrics_prefix}_usage_litmus",
62
173
  param_labels: %i[user poolname]
63
174
  },
64
175
  usage_jenkins_instance: {
65
176
  mtype: M_COUNTER,
66
177
  torun: %i[manager],
67
178
  docstring: 'Pools by Jenkins instance usage',
68
- prom_metric_prefix: "#{@metrics_prefix}_usage_jenkins_instance",
69
179
  param_labels: %i[jenkins_instance value_stream poolname]
70
180
  },
71
181
  usage_branch_project: {
72
182
  mtype: M_COUNTER,
73
183
  torun: %i[manager],
74
184
  docstring: 'Pools by branch/project usage',
75
- prom_metric_prefix: "#{@metrics_prefix}_usage_branch_project",
76
185
  param_labels: %i[branch project poolname]
77
186
  },
78
187
  usage_job_component: {
79
188
  mtype: M_COUNTER,
80
189
  torun: %i[manager],
81
190
  docstring: 'Pools by job/component usage',
82
- prom_metric_prefix: "#{@metrics_prefix}_usage_job_component",
83
191
  param_labels: %i[job_name component_to_test poolname]
84
192
  },
85
193
  checkout: {
86
194
  mtype: M_COUNTER,
87
195
  torun: %i[api],
88
196
  docstring: 'Pool checkout counts',
89
- prom_metric_prefix: "#{@metrics_prefix}_checkout",
90
197
  metric_suffixes: {
91
198
  nonresponsive: 'checkout failed - non responsive machine',
92
199
  empty: 'checkout failed - no machine',
@@ -99,7 +206,6 @@ module Vmpooler
99
206
  mtype: M_COUNTER,
100
207
  torun: %i[api],
101
208
  docstring: 'Delete machine',
102
- prom_metric_prefix: "#{@metrics_prefix}_delete",
103
209
  metric_suffixes: {
104
210
  success: 'succeeded',
105
211
  failed: 'failed'
@@ -110,7 +216,6 @@ module Vmpooler
110
216
  mtype: M_COUNTER,
111
217
  torun: %i[api],
112
218
  docstring: 'Ondemand request',
113
- prom_metric_prefix: "#{@metrics_prefix}_ondemandrequest_generate",
114
219
  metric_suffixes: {
115
220
  duplicaterequests: 'failed duplicate request',
116
221
  success: 'succeeded'
@@ -121,7 +226,6 @@ module Vmpooler
121
226
  mtype: M_COUNTER,
122
227
  torun: %i[api],
123
228
  docstring: 'Ondemand request failure',
124
- prom_metric_prefix: "#{@metrics_prefix}_ondemandrequest_fail",
125
229
  metric_suffixes: {
126
230
  toomanyrequests: 'too many requests',
127
231
  invalid: 'invalid poolname'
@@ -132,7 +236,6 @@ module Vmpooler
132
236
  mtype: M_COUNTER,
133
237
  torun: %i[api],
134
238
  docstring: 'vmpooler pool configuration request',
135
- prom_metric_prefix: "#{@metrics_prefix}_config",
136
239
  metric_suffixes: { invalid: 'Invalid' },
137
240
  param_labels: %i[poolname]
138
241
  },
@@ -140,7 +243,6 @@ module Vmpooler
140
243
  mtype: M_COUNTER,
141
244
  torun: %i[api],
142
245
  docstring: 'Pool reset counter',
143
- prom_metric_prefix: "#{@metrics_prefix}_poolreset",
144
246
  metric_suffixes: { invalid: 'Invalid Pool' },
145
247
  param_labels: %i[poolname]
146
248
  },
@@ -148,7 +250,6 @@ module Vmpooler
148
250
  mtype: M_COUNTER,
149
251
  torun: %i[manager],
150
252
  docstring: 'vmpooler connect (to vSphere)',
151
- prom_metric_prefix: "#{@metrics_prefix}_connect",
152
253
  metric_suffixes: {
153
254
  open: 'Connect Succeeded',
154
255
  fail: 'Connect Failed'
@@ -159,42 +260,36 @@ module Vmpooler
159
260
  mtype: M_COUNTER,
160
261
  torun: %i[manager],
161
262
  docstring: 'vmpooler machine migrated from',
162
- prom_metric_prefix: "#{@metrics_prefix}_migrate_from",
163
263
  param_labels: %i[host_name]
164
264
  },
165
265
  migrate_to: {
166
266
  mtype: M_COUNTER,
167
267
  torun: %i[manager],
168
268
  docstring: 'vmpooler machine migrated to',
169
- prom_metric_prefix: "#{@metrics_prefix}_migrate_to",
170
269
  param_labels: %i[host_name]
171
270
  },
172
- api_vm: {
271
+ http_requests_vm_total: {
173
272
  mtype: M_COUNTER,
174
273
  torun: %i[api],
175
274
  docstring: 'Total number of HTTP request/sub-operations handled by the Rack application under the /vm endpoint',
176
- prom_metric_prefix: "#{@metrics_prefix}_http_requests_vm_total",
177
275
  param_labels: %i[method subpath operation]
178
276
  },
179
277
  ready: {
180
278
  mtype: M_GAUGE,
181
279
  torun: %i[manager],
182
280
  docstring: 'vmpooler number of machines in ready State',
183
- prom_metric_prefix: "#{@metrics_prefix}_ready",
184
281
  param_labels: %i[poolname]
185
282
  },
186
283
  running: {
187
284
  mtype: M_GAUGE,
188
285
  torun: %i[manager],
189
286
  docstring: 'vmpooler number of machines running',
190
- prom_metric_prefix: "#{@metrics_prefix}_running",
191
287
  param_labels: %i[poolname]
192
288
  },
193
289
  connection_available: {
194
290
  mtype: M_GAUGE,
195
291
  torun: %i[manager],
196
292
  docstring: 'vmpooler redis connections available',
197
- prom_metric_prefix: "#{@metrics_prefix}_connection_available",
198
293
  param_labels: %i[type provider]
199
294
  },
200
295
  time_to_ready_state: {
@@ -202,7 +297,6 @@ module Vmpooler
202
297
  torun: %i[manager],
203
298
  buckets: POOLER_READY_TIME_BUCKETS,
204
299
  docstring: 'Time taken for machine to read ready state for pool',
205
- prom_metric_prefix: "#{@metrics_prefix}_time_to_ready_state",
206
300
  param_labels: %i[poolname]
207
301
  },
208
302
  migrate: {
@@ -210,7 +304,6 @@ module Vmpooler
210
304
  torun: %i[manager],
211
305
  buckets: POOLER_CLONE_TIME_BUCKETS,
212
306
  docstring: 'vmpooler time taken to migrate machine for pool',
213
- prom_metric_prefix: "#{@metrics_prefix}_migrate",
214
307
  param_labels: %i[poolname]
215
308
  },
216
309
  clone: {
@@ -218,7 +311,6 @@ module Vmpooler
218
311
  torun: %i[manager],
219
312
  buckets: POOLER_CLONE_TIME_BUCKETS,
220
313
  docstring: 'vmpooler time taken to clone machine',
221
- prom_metric_prefix: "#{@metrics_prefix}_clone",
222
314
  param_labels: %i[poolname]
223
315
  },
224
316
  destroy: {
@@ -226,7 +318,6 @@ module Vmpooler
226
318
  torun: %i[manager],
227
319
  buckets: POOLER_CLONE_TIME_BUCKETS,
228
320
  docstring: 'vmpooler time taken to destroy machine',
229
- prom_metric_prefix: "#{@metrics_prefix}_destroy",
230
321
  param_labels: %i[poolname]
231
322
  },
232
323
  connection_waited: {
@@ -234,7 +325,6 @@ module Vmpooler
234
325
  torun: %i[manager],
235
326
  buckets: REDIS_CONNECT_BUCKETS,
236
327
  docstring: 'vmpooler redis connection wait time',
237
- prom_metric_prefix: "#{@metrics_prefix}_connection_waited",
238
328
  param_labels: %i[type provider]
239
329
  }
240
330
  }
@@ -279,7 +369,7 @@ module Vmpooler
279
369
 
280
370
  def setup_prometheus_metrics(torun)
281
371
  @p_metrics = vmpooler_metrics_table
282
- @p_metrics.each do |_name, metric_spec|
372
+ @p_metrics.each do |name, metric_spec|
283
373
  # Only register metrics appropriate to api or manager
284
374
  next if (torun & metric_spec[:torun]).empty?
285
375
 
@@ -288,7 +378,7 @@ module Vmpooler
288
378
  metric_spec[:metric_suffixes].each do |metric_suffix|
289
379
  add_prometheus_metric(
290
380
  metric_spec,
291
- "#{metric_spec[:prom_metric_prefix]}_#{metric_suffix[0]}",
381
+ "#{@prometheus_prefix}_#{name}_#{metric_suffix[0]}",
292
382
  "#{metric_spec[:docstring]} #{metric_suffix[1]}"
293
383
  )
294
384
  end
@@ -296,7 +386,7 @@ module Vmpooler
296
386
  # No Additional counter suffixes so register this as metric.
297
387
  add_prometheus_metric(
298
388
  metric_spec,
299
- metric_spec[:prom_metric_prefix],
389
+ "#{@prometheus_prefix}_#{name}",
300
390
  metric_spec[:docstring]
301
391
  )
302
392
  end
@@ -315,9 +405,9 @@ module Vmpooler
315
405
  metric_subkey = sublabels.shift.to_sym
316
406
  raise("Invalid Metric #{metric_key}_#{metric_subkey} for #{label}") unless metric[:metric_suffixes].key? metric_subkey.to_sym
317
407
 
318
- metric[:metric_name] = "#{metric[:prom_metric_prefix]}_#{metric_subkey}"
408
+ metric[:metric_name] = "#{@prometheus_prefix}_#{metric_key}_#{metric_subkey}"
319
409
  else
320
- metric[:metric_name] = metric[:prom_metric_prefix]
410
+ metric[:metric_name] = "#{@prometheus_prefix}_#{metric_key}"
321
411
  end
322
412
 
323
413
  # Check if we are looking for a parameter value at last element.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vmpooler
4
- VERSION = '0.14.2'
4
+ VERSION = '0.14.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmpooler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-03 00:00:00.000000000 Z
11
+ date: 2020-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup