gitlab-exporter 7.2.0 → 10.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +1 -1
- data/.rubocop.yml +7 -5
- data/.rubocop_todo.yml +64 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +26 -15
- data/README.md +0 -17
- data/bin/gitlab-exporter +3 -1
- data/config/gitlab-exporter.yml.example +10 -1
- data/gitlab-exporter.gemspec +5 -4
- data/lib/gitlab_exporter.rb +1 -0
- data/lib/gitlab_exporter/cli.rb +1 -2
- data/lib/gitlab_exporter/database/base.rb +33 -10
- data/lib/gitlab_exporter/database/bloat.rb +2 -2
- data/lib/gitlab_exporter/database/ci_builds.rb +4 -137
- data/lib/gitlab_exporter/database/row_count.rb +7 -25
- data/lib/gitlab_exporter/database/tuple_stats.rb +4 -2
- data/lib/gitlab_exporter/git.rb +8 -1
- data/lib/gitlab_exporter/memstats.rb +1 -1
- data/lib/gitlab_exporter/memstats/mapping.rb +1 -1
- data/lib/gitlab_exporter/process.rb +13 -3
- data/lib/gitlab_exporter/ruby.rb +21 -0
- data/lib/gitlab_exporter/sidekiq.rb +83 -69
- data/lib/gitlab_exporter/util.rb +1 -1
- data/lib/gitlab_exporter/version.rb +1 -1
- data/lib/gitlab_exporter/web_exporter.rb +23 -1
- data/spec/database/bloat_spec.rb +1 -1
- data/spec/database/ci_builds_spec.rb +23 -98
- data/spec/git_process_proper_spec.rb +1 -1
- data/spec/memstats_spec.rb +3 -3
- data/spec/ruby_spec.rb +25 -0
- data/spec/spec_helper.rb +2 -4
- metadata +36 -17
@@ -24,7 +24,7 @@ module GitLab
|
|
24
24
|
private
|
25
25
|
|
26
26
|
def memory_usage
|
27
|
-
io = IO.popen(%W
|
27
|
+
io = IO.popen(%W[ps -o rss= -p #{$PID}])
|
28
28
|
|
29
29
|
mem = io.read
|
30
30
|
io.close
|
@@ -35,7 +35,24 @@ module GitLab
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
# Performs a major GC after each request. We found that this helps to free up
|
39
|
+
# several MB of memory in conjunction with sricter malloc config.
|
40
|
+
# See https://gitlab.com/gitlab-org/gitlab/-/issues/297241
|
41
|
+
class RunGC
|
42
|
+
def initialize(app)
|
43
|
+
@app = app
|
44
|
+
end
|
45
|
+
|
46
|
+
def call(env)
|
47
|
+
@app.call(env).tap do
|
48
|
+
GC.start
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
38
53
|
class << self
|
54
|
+
DEFAULT_WEB_SERVER = "webrick".freeze
|
55
|
+
|
39
56
|
def setup(config)
|
40
57
|
setup_server(config[:server])
|
41
58
|
setup_probes(config[:probes])
|
@@ -43,6 +60,10 @@ module GitLab
|
|
43
60
|
memory_threshold = (config[:server] && config[:server][:memory_threshold]) || 1024
|
44
61
|
use MemoryKillerMiddleware, memory_threshold
|
45
62
|
use Rack::Logger
|
63
|
+
use RunGC
|
64
|
+
|
65
|
+
# Defrag heap after everything is loaded into memory.
|
66
|
+
GC.compact
|
46
67
|
end
|
47
68
|
|
48
69
|
def logger
|
@@ -52,6 +73,7 @@ module GitLab
|
|
52
73
|
def setup_server(config)
|
53
74
|
config ||= {}
|
54
75
|
|
76
|
+
set(:server, config.fetch(:name, DEFAULT_WEB_SERVER))
|
55
77
|
set(:bind, config.fetch(:listen_address, "0.0.0.0"))
|
56
78
|
set(:port, config.fetch(:listen_port, 9168))
|
57
79
|
end
|
data/spec/database/bloat_spec.rb
CHANGED
@@ -26,7 +26,7 @@ describe GitLab::Exporter::Database::BloatCollector do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe GitLab::Exporter::Database::BloatProber do
|
29
|
-
let(:opts) { { bloat_types: %i
|
29
|
+
let(:opts) { { bloat_types: %i[btree table] } }
|
30
30
|
let(:metrics) { double("PrometheusMetrics", add: nil) }
|
31
31
|
let(:collector) { double("BloatCollector", run: data) }
|
32
32
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
require "gitlab_exporter/database/ci_builds"
|
3
3
|
|
4
|
-
# rubocop:disable
|
4
|
+
# rubocop:disable Layout/LineLength
|
5
5
|
describe GitLab::Exporter::Database do
|
6
6
|
let(:set_random_page_cost_query) { "SET random_page_cost" }
|
7
7
|
let(:builds_query_ee) { "SELECT BUILDS EE" }
|
@@ -10,12 +10,9 @@ describe GitLab::Exporter::Database do
|
|
10
10
|
let(:per_runner_query_ee) { "SELECT ALL RUNNING PER RUNNER EE" }
|
11
11
|
let(:per_runner_query_ce) { "SELECT ALL RUNNING PER RUNNER CE" }
|
12
12
|
let(:ee_check_query) { "SELECT COUNT(*) FROM licenses" }
|
13
|
-
let(:repeated_commands_query_ee) { "SELECT EE REPEATED COMNANDS %d" }
|
14
|
-
let(:repeated_commands_query_ce) { "SELECT CE REPEATED COMNANDS %d" }
|
15
13
|
let(:unarchived_traces_query) { "SELECT UNARCHIVED TRACES %s LIST" }
|
16
14
|
let(:connection_pool) { double("connection pool") }
|
17
15
|
let(:connection) { double("connection") }
|
18
|
-
let(:allowed_repeated_commands_count) { 5 }
|
19
16
|
let(:created_builds_counting_disabled) { true }
|
20
17
|
let(:time_now) { Time.new(2019, 4, 9, 6, 30, 0) }
|
21
18
|
let(:unarchived_traces_query_time) { "2019-04-09 05:30:00" }
|
@@ -63,22 +60,6 @@ describe GitLab::Exporter::Database do
|
|
63
60
|
end
|
64
61
|
# rubocop:enable Metrics/ParameterLists
|
65
62
|
|
66
|
-
# rubocop:disable Metrics/ParameterLists
|
67
|
-
def repeated_commands_query_row_ee(namespace_id, shared_runners_enabled, project_id, status, has_minutes, count)
|
68
|
-
row = repeated_commands_query_row_ce(namespace_id, shared_runners_enabled, project_id, status, count)
|
69
|
-
row["has_minutes"] = has_minutes
|
70
|
-
row
|
71
|
-
end
|
72
|
-
# rubocop:enable Metrics/ParameterLists
|
73
|
-
|
74
|
-
def repeated_commands_query_row_ce(namespace_id, shared_runners_enabled, project_id, status, count)
|
75
|
-
{ "namespace_id" => namespace_id,
|
76
|
-
"shared_runners_enabled" => shared_runners_enabled,
|
77
|
-
"project_id" => project_id,
|
78
|
-
"status" => status,
|
79
|
-
"count" => count }
|
80
|
-
end
|
81
|
-
|
82
63
|
before do
|
83
64
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::SET_RANDOM_PAGE_COST", set_random_page_cost_query)
|
84
65
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::BUILDS_QUERY_EE", builds_query_ee)
|
@@ -87,8 +68,6 @@ describe GitLab::Exporter::Database do
|
|
87
68
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::PER_RUNNER_QUERY_EE", per_runner_query_ee)
|
88
69
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::PER_RUNNER_QUERY_CE", per_runner_query_ce)
|
89
70
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::EE_CHECK_QUERY", ee_check_query)
|
90
|
-
stub_const("GitLab::Exporter::Database::CiBuildsCollector::REPEATED_COMMANDS_QUERY_EE", repeated_commands_query_ee)
|
91
|
-
stub_const("GitLab::Exporter::Database::CiBuildsCollector::REPEATED_COMMANDS_QUERY_CE", repeated_commands_query_ce)
|
92
71
|
stub_const("GitLab::Exporter::Database::CiBuildsCollector::UNARCHIVED_TRACES_QUERY", unarchived_traces_query)
|
93
72
|
|
94
73
|
allow_any_instance_of(GitLab::Exporter::Database::CiBuildsCollector).to receive(:connection_pool).and_return(connection_pool)
|
@@ -100,53 +79,35 @@ describe GitLab::Exporter::Database do
|
|
100
79
|
allow(Time).to receive(:now).and_return(time_now)
|
101
80
|
|
102
81
|
allow(connection).to receive(:exec).with(builds_query_ee)
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
82
|
+
.and_return([builds_query_row_ee("f", "created", "1", "f", 10),
|
83
|
+
builds_query_row_ee("t", "pending", "1", "t", 30),
|
84
|
+
builds_query_row_ee("f", "created", "2", "f", 20),
|
85
|
+
builds_query_row_ee("t", "pending", "2", "t", 50),
|
86
|
+
builds_query_row_ee("t", "pending", "3", "f", 1),
|
87
|
+
builds_query_row_ee("t", "pending", "4", "t", 2),
|
88
|
+
builds_query_row_ee("f", "pending", "5", "f", 2)])
|
110
89
|
allow(connection).to receive(:exec).with(builds_query_ce)
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
90
|
+
.and_return([builds_query_row_ce("f", "created", "1", 10),
|
91
|
+
builds_query_row_ce("t", "pending", "1", 30),
|
92
|
+
builds_query_row_ce("f", "created", "2", 20),
|
93
|
+
builds_query_row_ce("t", "pending", "2", 50),
|
94
|
+
builds_query_row_ce("t", "pending", "3", 1),
|
95
|
+
builds_query_row_ce("t", "pending", "4", 2),
|
96
|
+
builds_query_row_ce("f", "pending", "5", 2)])
|
118
97
|
|
119
98
|
allow(connection).to receive(:exec).with(stale_builds_query).and_return([{ "count" => 2 }])
|
120
99
|
|
121
100
|
allow(connection).to receive(:exec).with(per_runner_query_ee)
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
101
|
+
.and_return([per_runner_query_row_ee(1, "instance_type", 1, "f", "f", 1, nil, "t", 15),
|
102
|
+
per_runner_query_row_ee(2, "project_type", 2, "t", "t", nil, 3, "f", 5),
|
103
|
+
per_runner_query_row_ee(2, "project_type", 3, "t", "t", nil, 3, "t", 5),
|
104
|
+
per_runner_query_row_ee(3, "project_type", 4, "t", "t", nil, 3, "f", 5)])
|
126
105
|
|
127
106
|
allow(connection).to receive(:exec).with(per_runner_query_ce)
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
# rubocop:disable Style/FormatString
|
134
|
-
repeated_commands_query_ee_with_limit = repeated_commands_query_ee % [allowed_repeated_commands_count]
|
135
|
-
repeated_commands_query_ce_with_limit = repeated_commands_query_ce % [allowed_repeated_commands_count]
|
136
|
-
# rubocop:enable Style/FormatString
|
137
|
-
|
138
|
-
allow(connection).to receive(:exec)
|
139
|
-
.with(repeated_commands_query_ee_with_limit)
|
140
|
-
.and_return([repeated_commands_query_row_ee(1, "t", 1, "pending", "t", 10),
|
141
|
-
repeated_commands_query_row_ee(2, "f", 2, "running", "f", 20),
|
142
|
-
repeated_commands_query_row_ee(1, "f", 3, "pending", "t", 30),
|
143
|
-
repeated_commands_query_row_ee(2, "t", 4, "running", "f", 40)])
|
144
|
-
allow(connection).to receive(:exec)
|
145
|
-
.with(repeated_commands_query_ce_with_limit)
|
146
|
-
.and_return([repeated_commands_query_row_ce(1, "t", 1, "pending", 10),
|
147
|
-
repeated_commands_query_row_ce(2, "f", 2, "running", 20),
|
148
|
-
repeated_commands_query_row_ce(1, "f", 3, "pending", 30),
|
149
|
-
repeated_commands_query_row_ce(2, "t", 4, "running", 40)])
|
107
|
+
.and_return([per_runner_query_row_ce(1, "instance_type", 1, 1, nil, 15),
|
108
|
+
per_runner_query_row_ce(2, "project_type", 2, nil, 3, 5),
|
109
|
+
per_runner_query_row_ce(2, "project_type", 3, nil, 3, 5),
|
110
|
+
per_runner_query_row_ce(3, "project_type", 4, nil, 3, 5)])
|
150
111
|
|
151
112
|
unarchived_traces_query_with_time = unarchived_traces_query % [unarchived_traces_query_time] # rubocop:disable Style/FormatString
|
152
113
|
|
@@ -156,7 +117,6 @@ describe GitLab::Exporter::Database do
|
|
156
117
|
describe GitLab::Exporter::Database::CiBuildsCollector do
|
157
118
|
let(:collector) do
|
158
119
|
described_class.new(connection_string: "host=localhost",
|
159
|
-
allowed_repeated_commands_count: allowed_repeated_commands_count,
|
160
120
|
created_builds_counting_disabled: created_builds_counting_disabled,
|
161
121
|
unarchived_traces_offset_minutes: unarchived_traces_offset_minutes)
|
162
122
|
end
|
@@ -195,10 +155,6 @@ describe GitLab::Exporter::Database do
|
|
195
155
|
expect(subject[:stale_builds]).to eq(expected_stale_builds)
|
196
156
|
end
|
197
157
|
|
198
|
-
it "returns raw repeated_commands data" do
|
199
|
-
expect(subject[:repeated_commands]).to include(*expected_repeated_commands)
|
200
|
-
end
|
201
|
-
|
202
158
|
it "returns raw unarchived_traces data" do
|
203
159
|
expect(subject[:unarchived_traces]).to eq(expected_unarchived_traces)
|
204
160
|
end
|
@@ -222,12 +178,6 @@ describe GitLab::Exporter::Database do
|
|
222
178
|
{ runner: "2", runner_type: "project_type", namespace: "3", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "yes", value: 5.0 },
|
223
179
|
{ runner: "3", runner_type: "project_type", namespace: "4", mirror: "yes", mirror_trigger_builds: "yes", scheduled: "no", triggered: "yes", has_minutes: "no", value: 5.0 }]
|
224
180
|
end
|
225
|
-
let(:expected_repeated_commands) do
|
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
|
-
end
|
231
181
|
|
232
182
|
before do
|
233
183
|
stub_ee
|
@@ -254,12 +204,6 @@ describe GitLab::Exporter::Database do
|
|
254
204
|
{ runner: "2", runner_type: "project_type", namespace: "3", scheduled: "no", triggered: "yes", value: 5 },
|
255
205
|
{ runner: "3", runner_type: "project_type", namespace: "4", scheduled: "no", triggered: "yes", value: 5 }]
|
256
206
|
end
|
257
|
-
let(:expected_repeated_commands) do
|
258
|
-
[{ namespace: "1", project: "1", shared_runners: "yes", status: "pending", value: 10 },
|
259
|
-
{ namespace: "2", project: "2", shared_runners: "no", status: "running", value: 20 },
|
260
|
-
{ namespace: "1", project: "3", shared_runners: "no", status: "pending", value: 30 },
|
261
|
-
{ namespace: "2", project: "4", shared_runners: "yes", status: "running", value: 40 }]
|
262
|
-
end
|
263
207
|
|
264
208
|
before do
|
265
209
|
stub_ce
|
@@ -273,7 +217,6 @@ describe GitLab::Exporter::Database do
|
|
273
217
|
let(:writer) { StringIO.new }
|
274
218
|
let(:prober) do
|
275
219
|
opts = { connection_string: "host=localhost",
|
276
|
-
allowed_repeated_commands_count: allowed_repeated_commands_count,
|
277
220
|
created_builds_counting_disabled: created_builds_counting_disabled,
|
278
221
|
unarchived_traces_offset_minutes: unarchived_traces_offset_minutes }
|
279
222
|
described_class.new(opts,
|
@@ -324,12 +267,6 @@ describe GitLab::Exporter::Database do
|
|
324
267
|
end
|
325
268
|
end
|
326
269
|
|
327
|
-
it "responds with repeated commands Prometheus metrics" do
|
328
|
-
ci_repeated_commands_builds_lines.each do |expected_line|
|
329
|
-
expect(subject).to match(Regexp.new("^#{expected_line}$", Regexp::MULTILINE))
|
330
|
-
end
|
331
|
-
end
|
332
|
-
|
333
270
|
it "responds with stale builds Prometheus metrics" do
|
334
271
|
expect(subject).to match(/^ci_stale_builds 2.0$/m)
|
335
272
|
end
|
@@ -372,12 +309,6 @@ describe GitLab::Exporter::Database do
|
|
372
309
|
'ci_running_builds\{has_minutes="yes",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="2",runner_type="project_type",scheduled="no",triggered="yes"\} 5.0',
|
373
310
|
'ci_running_builds\{has_minutes="no",mirror="yes",mirror_trigger_builds="yes",namespace="",runner="3",runner_type="project_type",scheduled="no",triggered="yes"\} 5.0']
|
374
311
|
end
|
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.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
|
-
end
|
381
312
|
let(:namespace_out_of_limit) { 2 }
|
382
313
|
|
383
314
|
before do
|
@@ -403,12 +334,6 @@ describe GitLab::Exporter::Database do
|
|
403
334
|
'ci_running_builds\{namespace="",runner="2",runner_type="project_type",scheduled="no",triggered="yes"\} 10.0',
|
404
335
|
'ci_running_builds\{namespace="",runner="3",runner_type="project_type",scheduled="no",triggered="yes"\} 5.0']
|
405
336
|
end
|
406
|
-
let(:ci_repeated_commands_builds_lines) do
|
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
|
-
end
|
412
337
|
let(:namespace_out_of_limit) { 0 }
|
413
338
|
|
414
339
|
before do
|
data/spec/memstats_spec.rb
CHANGED
@@ -14,11 +14,11 @@ describe GitLab::Exporter::MemStats do
|
|
14
14
|
it "parses the data properly" do
|
15
15
|
expect(subject.valid?).to be_truthy
|
16
16
|
|
17
|
-
nonzero_fields = %w
|
18
|
-
zero_fields = %w
|
17
|
+
nonzero_fields = %w[size rss shared_clean shared_dirty private_dirty pss]
|
18
|
+
zero_fields = %w[private_clean swap]
|
19
19
|
|
20
20
|
nonzero_fields.each do |field|
|
21
|
-
expect(subject.totals[field]).to be > 0
|
21
|
+
expect(subject.totals[field]).to be > 0
|
22
22
|
end
|
23
23
|
|
24
24
|
zero_fields.each do |field|
|
data/spec/ruby_spec.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "gitlab_exporter/ruby"
|
3
|
+
require "gitlab_exporter/prober"
|
4
|
+
|
5
|
+
describe GitLab::Exporter::RubyProber do
|
6
|
+
let(:prober) { GitLab::Exporter::Prober.new(options) }
|
7
|
+
|
8
|
+
let(:options) do
|
9
|
+
{
|
10
|
+
ruby: {
|
11
|
+
class_name: described_class.to_s,
|
12
|
+
methods: %w[probe_gc],
|
13
|
+
opts: { quantiles: false }
|
14
|
+
}
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
it "probes and returns GC stats" do
|
19
|
+
prober.probe_all
|
20
|
+
|
21
|
+
output = StringIO.new
|
22
|
+
prober.write_to(output)
|
23
|
+
expect(output.string).to match(/ruby_gc_stat_count \d+ \d+/)
|
24
|
+
end
|
25
|
+
end
|
data/spec/spec_helper.rb
CHANGED
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:
|
4
|
+
version: 10.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pablo Carranza
|
@@ -11,61 +11,61 @@ cert_chain: []
|
|
11
11
|
date: 2016-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: connection_pool
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.2.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.2.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: pg
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '1.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: puma
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 5.1.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 5.1.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: quantile
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.2.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.2.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: redis
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,19 +95,33 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.6.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: sidekiq
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 5.2.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 5.2.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sinatra
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 2.0.4
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.0.4
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: rspec
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,6 +160,8 @@ files:
|
|
146
160
|
- ".gitignore"
|
147
161
|
- ".gitlab-ci.yml"
|
148
162
|
- ".rubocop.yml"
|
163
|
+
- ".rubocop_todo.yml"
|
164
|
+
- ".ruby-version"
|
149
165
|
- CONTRIBUTING.md
|
150
166
|
- Gemfile
|
151
167
|
- Gemfile.lock
|
@@ -171,6 +187,7 @@ files:
|
|
171
187
|
- lib/gitlab_exporter/prober.rb
|
172
188
|
- lib/gitlab_exporter/process.rb
|
173
189
|
- lib/gitlab_exporter/prometheus.rb
|
190
|
+
- lib/gitlab_exporter/ruby.rb
|
174
191
|
- lib/gitlab_exporter/sidekiq.rb
|
175
192
|
- lib/gitlab_exporter/sidekiq_queue_job_stats.lua
|
176
193
|
- lib/gitlab_exporter/util.rb
|
@@ -185,6 +202,7 @@ files:
|
|
185
202
|
- spec/git_spec.rb
|
186
203
|
- spec/memstats_spec.rb
|
187
204
|
- spec/prometheus_metrics_spec.rb
|
205
|
+
- spec/ruby_spec.rb
|
188
206
|
- spec/spec_helper.rb
|
189
207
|
- spec/util_spec.rb
|
190
208
|
homepage: http://gitlab.com
|
@@ -206,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
224
|
- !ruby/object:Gem::Version
|
207
225
|
version: '0'
|
208
226
|
requirements: []
|
209
|
-
rubygems_version: 3.
|
227
|
+
rubygems_version: 3.1.4
|
210
228
|
signing_key:
|
211
229
|
specification_version: 4
|
212
230
|
summary: GitLab metrics exporter
|
@@ -220,5 +238,6 @@ test_files:
|
|
220
238
|
- spec/git_spec.rb
|
221
239
|
- spec/memstats_spec.rb
|
222
240
|
- spec/prometheus_metrics_spec.rb
|
241
|
+
- spec/ruby_spec.rb
|
223
242
|
- spec/spec_helper.rb
|
224
243
|
- spec/util_spec.rb
|