gitlab-exporter 5.0.1 → 5.1.0

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: fdd56172f3a01bd1e0cd2f2054aee6c8e4877e39847e6d242a7e9b51e04b1289
4
- data.tar.gz: fa7a64cf59169efc726326fd7fb3c3e7bc832a9a10f3ea122e4bfad53f906ec8
3
+ metadata.gz: 7f73ad8856766603f5e3bfc3d142c803812a121b370fc4c2f717dde81e2796ec
4
+ data.tar.gz: e599d10943b9ed01befbfc642f49f561665e2e6d8134bbe68f20b4e997b845a5
5
5
  SHA512:
6
- metadata.gz: 2d66f6aafab68e9d9e5cbde86a81d1f28385b887e35b4032cf76a147203208708a302a0e565340bd87c25c6a99e4e11f6ba39839644f79b9e78dce0b30f1b7dd
7
- data.tar.gz: 3f80aa6f2bca1afc0593150471afc532d9d01aaf299a50f6a4b54fd13dba4dd59aadaa28bc4a495a84afd5a789a7ab463396bf94bcc62357b4434ee3200aeec0
6
+ metadata.gz: a2229b8daf628778d9e9b5c95adb782d8cfa8a3f9cab0966696ea2b99a54592734e3ede04c73175c540e3a331199a97bc637d678a98b41edbc5223891213ddc7
7
+ data.tar.gz: 6b0c1f64c4c02e22d11dc2abac2286612e8546ea31d591ce50f102ab6295229ed231bc16604bdeed9f3a3b4b828e4b33bacd81422dd58dae5a49084d738f2886
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitlab-exporter (5.0.1)
4
+ gitlab-exporter (5.1.0)
5
5
  connection_pool (~> 2.2.1)
6
6
  pg (~> 1.1)
7
7
  quantile (~> 0.2.0)
@@ -60,7 +60,7 @@ module GitLab
60
60
  def probe_for_type(type)
61
61
  collector.run(type).each do |query_name, data|
62
62
  METRIC_KEYS.each do |key|
63
- metrics.add("gitlab_database_bloat_#{type}_#{key}", data[key], query_name: query_name)
63
+ metrics.add("gitlab_database_bloat_#{type}_#{key}", data[key].to_f, query_name: query_name)
64
64
  end
65
65
  end
66
66
 
@@ -463,7 +463,7 @@ module GitLab
463
463
  other_values[key] ||= 0
464
464
  other_values[key] += metric[:value]
465
465
  else
466
- add_ci_created_pending_builds(metric_name, metric[:value], metric)
466
+ add_ci_created_pending_builds(metric_name, metric[:value].to_f, metric)
467
467
  end
468
468
  end
469
469
 
@@ -479,7 +479,7 @@ module GitLab
479
479
  end
480
480
 
481
481
  def ci_stale_builds_metrics
482
- @metrics.add("ci_stale_builds", @results[:stale_builds])
482
+ @metrics.add("ci_stale_builds", @results[:stale_builds].to_f)
483
483
  end
484
484
 
485
485
  def metrics_per_runner
@@ -519,19 +519,19 @@ module GitLab
519
519
  labels[:namespace] = "" unless labels[:namespace]
520
520
 
521
521
  selected_labels = labels.select { |k, _| allowed_labels.include?(k) }.sort.to_h
522
- @metrics.add(metric_name, value, selected_labels)
522
+ @metrics.add(metric_name, value.to_f, selected_labels)
523
523
  end
524
524
 
525
525
  def repeated_commands_metrics
526
526
  @results[:repeated_commands].each do |metric|
527
527
  value = metric.delete(:value)
528
528
 
529
- @metrics.add("ci_repeated_commands_builds", value, metric)
529
+ @metrics.add("ci_repeated_commands_builds", value.to_f, metric)
530
530
  end
531
531
  end
532
532
 
533
533
  def unarchived_traces_metrics
534
- @metrics.add("ci_unarchived_traces", @results[:unarchived_traces])
534
+ @metrics.add("ci_unarchived_traces", @results[:unarchived_traces].to_f)
535
535
  end
536
536
  end
537
537
  end
@@ -48,13 +48,13 @@ module GitLab
48
48
  results.to_a.each do |row|
49
49
  @metrics.add(
50
50
  "project_remote_mirror_last_successful_update_time_seconds",
51
- row["last_successful_update_at"].to_i,
51
+ row["last_successful_update_at"].to_f,
52
52
  project_id: row["project_id"],
53
53
  url: row["url"]
54
54
  )
55
55
  @metrics.add(
56
56
  "project_remote_mirror_last_update_time_seconds",
57
- row["last_update_at"].to_i,
57
+ row["last_update_at"].to_f,
58
58
  project_id: row["project_id"],
59
59
  url: row["url"]
60
60
  )
@@ -147,7 +147,7 @@ module GitLab
147
147
  def probe_db
148
148
  results = @collector.run
149
149
  results.each do |key, value|
150
- @metrics.add("gitlab_database_rows", value.to_i, query_name: key.to_s)
150
+ @metrics.add("gitlab_database_rows", value.to_f, query_name: key.to_s)
151
151
  end
152
152
 
153
153
  self
@@ -35,7 +35,9 @@ module GitLab
35
35
 
36
36
  result.each do |table_name, tuple_stats|
37
37
  tuple_stats.each do |column_name, value|
38
- @metrics.add("gitlab_database_stat_table_#{column_name}", value.to_s, table_name: table_name)
38
+ @metrics.add("gitlab_database_stat_table_#{column_name}",
39
+ value.to_f,
40
+ table_name: table_name) unless value.is_a?(Numeric)
39
41
  end
40
42
  end
41
43
 
@@ -16,6 +16,8 @@ module GitLab
16
16
  end
17
17
 
18
18
  def add(name, value, quantile = false, **labels)
19
+ fail "value '#{value}' must be a number" unless value.is_a?(Numeric)
20
+
19
21
  if quantile
20
22
  @quantiles[{ name: name, labels: labels }] << value
21
23
  else
@@ -1,5 +1,5 @@
1
1
  module GitLab
2
2
  module Exporter
3
- VERSION = "5.0.1".freeze
3
+ VERSION = "5.1.0".freeze
4
4
  end
5
5
  end
@@ -206,27 +206,27 @@ describe GitLab::Exporter::Database do
206
206
 
207
207
  context "when executed on EE" do
208
208
  let(:expected_pending_builds) do
209
- [{ namespace: "1", shared_runners: "yes", has_minutes: "yes", value: 30 },
210
- { namespace: "2", shared_runners: "yes", has_minutes: "yes", value: 50 },
211
- { namespace: "3", shared_runners: "yes", has_minutes: "no", value: 1 },
212
- { namespace: "4", shared_runners: "yes", has_minutes: "yes", value: 2 },
213
- { namespace: "5", shared_runners: "no", has_minutes: "no", value: 2 }]
209
+ [{ namespace: "1", shared_runners: "yes", has_minutes: "yes", value: 30.0 },
210
+ { namespace: "2", shared_runners: "yes", has_minutes: "yes", value: 50.0 },
211
+ { namespace: "3", shared_runners: "yes", has_minutes: "no", value: 1.0 },
212
+ { namespace: "4", shared_runners: "yes", has_minutes: "yes", value: 2.0 },
213
+ { namespace: "5", shared_runners: "no", has_minutes: "no", value: 2.0 }]
214
214
  end
215
215
  let(:expected_created_builds) do
216
- [{ namespace: "1", shared_runners: "no", has_minutes: "no", value: 10 },
217
- { namespace: "2", shared_runners: "no", has_minutes: "no", value: 20 }]
216
+ [{ namespace: "1", shared_runners: "no", has_minutes: "no", value: 10.0 },
217
+ { namespace: "2", shared_runners: "no", has_minutes: "no", value: 20.0 }]
218
218
  end
219
219
  let(:expected_per_runner) do
220
- [{ runner: "1", shared_runner: "yes", namespace: "1", mirror: "no", mirror_trigger_builds: "no", scheduled: "yes", triggered: "no", has_minutes: "yes", value: 15 },
221
- { runner: "2", shared_runner: "no", namespace: "2", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "no", value: 5 },
222
- { runner: "2", shared_runner: "no", namespace: "3", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "yes", value: 5 },
223
- { runner: "3", shared_runner: "no", namespace: "4", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "no", value: 5 }]
220
+ [{ runner: "1", shared_runner: "yes", namespace: "1", mirror: "no", mirror_trigger_builds: "no", scheduled: "yes", triggered: "no", has_minutes: "yes", value: 15.0 },
221
+ { runner: "2", shared_runner: "no", namespace: "2", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "no", value: 5.0 },
222
+ { runner: "2", shared_runner: "no", namespace: "3", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "yes", value: 5.0 },
223
+ { runner: "3", shared_runner: "no", namespace: "4", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "no", value: 5.0 }]
224
224
  end
225
225
  let(:expected_repeated_commands) do
226
- [{ namespace: "1", project: "1", shared_runners: "yes", status: "pending", has_minutes: "yes", value: 10 },
227
- { namespace: "2", project: "2", shared_runners: "no", status: "running", has_minutes: "no", value: 20 },
228
- { namespace: "1", project: "3", shared_runners: "no", status: "pending", has_minutes: "yes", value: 30 },
229
- { namespace: "2", project: "4", shared_runners: "yes", status: "running", has_minutes: "no", value: 40 }]
226
+ [{ namespace: "1", project: "1", shared_runners: "yes", status: "pending", has_minutes: "yes", value: 10.0 },
227
+ { namespace: "2", project: "2", shared_runners: "no", status: "running", has_minutes: "no", value: 20.0 },
228
+ { namespace: "1", project: "3", shared_runners: "no", status: "pending", has_minutes: "yes", value: 30.0 },
229
+ { namespace: "2", project: "4", shared_runners: "yes", status: "running", has_minutes: "no", value: 40.0 }]
230
230
  end
231
231
 
232
232
  before do
@@ -331,11 +331,11 @@ describe GitLab::Exporter::Database do
331
331
  end
332
332
 
333
333
  it "responds with stale builds Prometheus metrics" do
334
- expect(subject).to match(/^ci_stale_builds 2$/m)
334
+ expect(subject).to match(/^ci_stale_builds 2.0$/m)
335
335
  end
336
336
 
337
337
  it "responds with unarchived traces Prometheus metrics" do
338
- expect(subject).to match(/^ci_unarchived_traces 10$/m)
338
+ expect(subject).to match(/^ci_unarchived_traces 10.0$/m)
339
339
  end
340
340
  end
341
341
 
@@ -349,34 +349,34 @@ describe GitLab::Exporter::Database do
349
349
  prober.write_to(writer)
350
350
  output = writer.string
351
351
 
352
- expect(output).to match(/^ci_stale_builds 0$/m)
352
+ expect(output).to match(/^ci_stale_builds 0.0$/m)
353
353
  end
354
354
  end
355
355
  end
356
356
 
357
357
  context "when executed on EE" do
358
358
  let(:ci_created_builds_expected_lines) do
359
- ['ci_created_builds\{has_minutes="no",namespace="1",shared_runners="no"\} 10',
360
- 'ci_created_builds\{has_minutes="no",namespace="2",shared_runners="no"\} 20']
359
+ ['ci_created_builds\{has_minutes="no",namespace="1",shared_runners="no"\} 10.0',
360
+ 'ci_created_builds\{has_minutes="no",namespace="2",shared_runners="no"\} 20.0']
361
361
  end
362
362
  let(:ci_pending_builds_expected_lines) do
363
- ['ci_pending_builds\{has_minutes="yes",namespace="1",shared_runners="yes"\} 30',
364
- 'ci_pending_builds\{has_minutes="yes",namespace="2",shared_runners="yes"\} 50',
365
- 'ci_pending_builds\{has_minutes="no",namespace="",shared_runners="yes"\} 1',
366
- 'ci_pending_builds\{has_minutes="yes",namespace="",shared_runners="yes"\} 2',
367
- 'ci_pending_builds\{has_minutes="no",namespace="",shared_runners="no"\} 2']
363
+ ['ci_pending_builds\{has_minutes="yes",namespace="1",shared_runners="yes"\} 30.0',
364
+ 'ci_pending_builds\{has_minutes="yes",namespace="2",shared_runners="yes"\} 50.0',
365
+ 'ci_pending_builds\{has_minutes="no",namespace="",shared_runners="yes"\} 1.0',
366
+ 'ci_pending_builds\{has_minutes="yes",namespace="",shared_runners="yes"\} 2.0',
367
+ 'ci_pending_builds\{has_minutes="no",namespace="",shared_runners="no"\} 2.0']
368
368
  end
369
369
  let(:ci_running_builds_expected_lines) do
370
- ['ci_running_builds\{has_minutes="yes",mirror="no",mirror_trigger_builds="no",namespace="1",runner="1",scheduled="yes",shared_runner="yes",triggered="no"\} 15',
371
- 'ci_running_builds\{has_minutes="no",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 5',
372
- 'ci_running_builds\{has_minutes="yes",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 5',
373
- 'ci_running_builds\{has_minutes="no",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="3",scheduled="no",shared_runner="no",triggered="yes"\} 5']
370
+ ['ci_running_builds\{has_minutes="yes",mirror="no",mirror_trigger_builds="no",namespace="1",runner="1",scheduled="yes",shared_runner="yes",triggered="no"\} 15.0',
371
+ 'ci_running_builds\{has_minutes="no",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 5.0',
372
+ 'ci_running_builds\{has_minutes="yes",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 5.0',
373
+ 'ci_running_builds\{has_minutes="no",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="3",scheduled="no",shared_runner="no",triggered="yes"\} 5.0']
374
374
  end
375
375
  let(:ci_repeated_commands_builds_lines) do
376
- ['ci_repeated_commands_builds\{namespace="1",project="1",shared_runners="yes",status="pending",has_minutes="yes"\} 10',
377
- 'ci_repeated_commands_builds\{namespace="2",project="2",shared_runners="no",status="running",has_minutes="no"\} 20',
378
- 'ci_repeated_commands_builds\{namespace="1",project="3",shared_runners="no",status="pending",has_minutes="yes"\} 30',
379
- 'ci_repeated_commands_builds\{namespace="2",project="4",shared_runners="yes",status="running",has_minutes="no"\} 40']
376
+ ['ci_repeated_commands_builds\{namespace="1",project="1",shared_runners="yes",status="pending",has_minutes="yes"\} 10.0',
377
+ 'ci_repeated_commands_builds\{namespace="2",project="2",shared_runners="no",status="running",has_minutes="no"\} 20.0',
378
+ 'ci_repeated_commands_builds\{namespace="1",project="3",shared_runners="no",status="pending",has_minutes="yes"\} 30.0',
379
+ 'ci_repeated_commands_builds\{namespace="2",project="4",shared_runners="yes",status="running",has_minutes="no"\} 40.0']
380
380
  end
381
381
  let(:namespace_out_of_limit) { 2 }
382
382
 
@@ -389,25 +389,25 @@ describe GitLab::Exporter::Database do
389
389
 
390
390
  context "when executed on CE" do
391
391
  let(:ci_created_builds_expected_lines) do
392
- ['ci_created_builds\{namespace="1",shared_runners="no"\} 10',
393
- 'ci_created_builds\{namespace="2",shared_runners="no"\} 20']
392
+ ['ci_created_builds\{namespace="1",shared_runners="no"\} 10.0',
393
+ 'ci_created_builds\{namespace="2",shared_runners="no"\} 20.0']
394
394
  end
395
395
  let(:ci_pending_builds_expected_lines) do
396
- ['ci_pending_builds\{namespace="1",shared_runners="yes"\} 30',
397
- 'ci_pending_builds\{namespace="2",shared_runners="yes"\} 50',
398
- 'ci_pending_builds\{namespace="",shared_runners="yes"\} 3',
399
- 'ci_pending_builds\{namespace="",shared_runners="no"\} 2']
396
+ ['ci_pending_builds\{namespace="1",shared_runners="yes"\} 30.0',
397
+ 'ci_pending_builds\{namespace="2",shared_runners="yes"\} 50.0',
398
+ 'ci_pending_builds\{namespace="",shared_runners="yes"\} 3.0',
399
+ 'ci_pending_builds\{namespace="",shared_runners="no"\} 2.0']
400
400
  end
401
401
  let(:ci_running_builds_expected_lines) do
402
- ['ci_running_builds\{namespace="1",runner="1",scheduled="yes",shared_runner="yes",triggered="no"\} 15',
403
- 'ci_running_builds\{namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 10',
404
- 'ci_running_builds\{namespace="",runner="3",scheduled="no",shared_runner="no",triggered="yes"\} 5']
402
+ ['ci_running_builds\{namespace="1",runner="1",scheduled="yes",shared_runner="yes",triggered="no"\} 15.0',
403
+ 'ci_running_builds\{namespace="",runner="2",scheduled="no",shared_runner="no",triggered="yes"\} 10.0',
404
+ 'ci_running_builds\{namespace="",runner="3",scheduled="no",shared_runner="no",triggered="yes"\} 5.0']
405
405
  end
406
406
  let(:ci_repeated_commands_builds_lines) do
407
- ['ci_repeated_commands_builds\{namespace="1",project="1",shared_runners="yes",status="pending"\} 10',
408
- 'ci_repeated_commands_builds\{namespace="2",project="2",shared_runners="no",status="running"\} 20',
409
- 'ci_repeated_commands_builds\{namespace="1",project="3",shared_runners="no",status="pending"\} 30',
410
- 'ci_repeated_commands_builds\{namespace="2",project="4",shared_runners="yes",status="running"\} 40']
407
+ ['ci_repeated_commands_builds\{namespace="1",project="1",shared_runners="yes",status="pending"\} 10.0',
408
+ 'ci_repeated_commands_builds\{namespace="2",project="2",shared_runners="no",status="running"\} 20.0',
409
+ 'ci_repeated_commands_builds\{namespace="1",project="3",shared_runners="no",status="pending"\} 30.0',
410
+ 'ci_repeated_commands_builds\{namespace="2",project="4",shared_runners="yes",status="running"\} 40.0']
411
411
  end
412
412
  let(:namespace_out_of_limit) { 0 }
413
413
 
@@ -14,4 +14,13 @@ describe GitLab::Exporter::PrometheusMetrics do
14
14
  /mymetric{mylabel="x",myotherlabel="y"} 1.3 \d*$/
15
15
  )
16
16
  end
17
+
18
+ it "fails to add a non-numeric metric value" do
19
+ expect {
20
+ subject.add("mymetric", "1.4", mylabel: "x", myotherlabel: "y").to_s
21
+ }.to raise_error(RuntimeError)
22
+ expect {
23
+ subject.add("mymetric", "invalid", mylabel: "x", myotherlabel: "y").to_s
24
+ }.to raise_error(RuntimeError)
25
+ end
17
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.1
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Carranza
@@ -206,8 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
206
  - !ruby/object:Gem::Version
207
207
  version: '0'
208
208
  requirements: []
209
- rubyforge_project:
210
- rubygems_version: 2.7.8
209
+ rubygems_version: 3.0.3
211
210
  signing_key:
212
211
  specification_version: 4
213
212
  summary: GitLab metrics exporter