gitlab-exporter 16.2.0 → 16.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/gitlab-exporter.gemspec +2 -2
- data/lib/gitlab_exporter/database/zoekt.rb +40 -8
- data/lib/gitlab_exporter/version.rb +1 -1
- data/spec/database/zoekt_spec.rb +9 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dfb5ffd66eceaaada65415073b18a42568888669d775689fbf2aaf3e58b02d7f
|
|
4
|
+
data.tar.gz: 2cda7d12814c7164425331e2be436000dc91ea8551387ce207bfafe49bcc69aa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0f91104bdeb03655fff74687478fcd81d1ffc03ac6f4be391c4bb9ff93e6b0171a57471aee54947b2536fe6cbdfd561ef0150fd7e306e3533ba3a2ea830b5d42
|
|
7
|
+
data.tar.gz: 195a6184776a297eadf4fa74883ff3780cd23f33a8d93fb67f19fcf79a202e818f88ac830656fb5d8fc9f64fd7378d6d4db6ae565b15866ad274d9fe7ccc2443
|
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
gitlab-exporter (16.
|
|
5
|
-
connection_pool (= 2.5.
|
|
4
|
+
gitlab-exporter (16.3.1)
|
|
5
|
+
connection_pool (= 2.5.5)
|
|
6
6
|
deep_merge (~> 1.2.2)
|
|
7
7
|
faraday (= 2.14.0)
|
|
8
8
|
pg (= 1.6.2)
|
|
9
|
-
puma (=
|
|
9
|
+
puma (= 7.1.0)
|
|
10
10
|
quantile (= 0.2.1)
|
|
11
11
|
redis (= 4.8.1)
|
|
12
12
|
redis-namespace (= 1.11.0)
|
|
@@ -19,7 +19,7 @@ GEM
|
|
|
19
19
|
specs:
|
|
20
20
|
ast (2.4.3)
|
|
21
21
|
base64 (0.2.0)
|
|
22
|
-
connection_pool (2.5.
|
|
22
|
+
connection_pool (2.5.5)
|
|
23
23
|
deep_merge (1.2.2)
|
|
24
24
|
diff-lcs (1.5.0)
|
|
25
25
|
faraday (2.14.0)
|
|
@@ -40,7 +40,7 @@ GEM
|
|
|
40
40
|
racc
|
|
41
41
|
pg (1.6.2)
|
|
42
42
|
prism (1.4.0)
|
|
43
|
-
puma (
|
|
43
|
+
puma (7.1.0)
|
|
44
44
|
nio4r (~> 2.0)
|
|
45
45
|
quantile (0.2.1)
|
|
46
46
|
racc (1.8.1)
|
|
@@ -66,7 +66,7 @@ GEM
|
|
|
66
66
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
67
67
|
rspec-support (~> 3.12.0)
|
|
68
68
|
rspec-support (3.12.0)
|
|
69
|
-
rubocop (1.81.
|
|
69
|
+
rubocop (1.81.7)
|
|
70
70
|
json (~> 2.3)
|
|
71
71
|
language_server-protocol (~> 3.17.0.2)
|
|
72
72
|
lint_roller (~> 1.1.0)
|
data/gitlab-exporter.gemspec
CHANGED
|
@@ -22,11 +22,11 @@ Gem::Specification.new do |s|
|
|
|
22
22
|
|
|
23
23
|
s.required_ruby_version = Gem::Requirement.new(">= 3.0")
|
|
24
24
|
|
|
25
|
-
s.add_runtime_dependency "connection_pool", "2.5.
|
|
25
|
+
s.add_runtime_dependency "connection_pool", "2.5.5"
|
|
26
26
|
s.add_runtime_dependency "deep_merge", "~> 1.2.2"
|
|
27
27
|
s.add_runtime_dependency "faraday", "2.14.0"
|
|
28
28
|
s.add_runtime_dependency "pg", "1.6.2"
|
|
29
|
-
s.add_runtime_dependency "puma", "
|
|
29
|
+
s.add_runtime_dependency "puma", "7.1.0"
|
|
30
30
|
s.add_runtime_dependency "quantile", "0.2.1"
|
|
31
31
|
s.add_runtime_dependency "redis", "4.8.1"
|
|
32
32
|
s.add_runtime_dependency "redis-namespace", "1.11.0"
|
|
@@ -31,6 +31,16 @@ module GitLab
|
|
|
31
31
|
SELECT schema_version, id FROM zoekt_nodes
|
|
32
32
|
SQL
|
|
33
33
|
|
|
34
|
+
ZOEKT_NODES_STATUS_QUERY = <<~SQL.freeze
|
|
35
|
+
SELECT
|
|
36
|
+
id,
|
|
37
|
+
CASE
|
|
38
|
+
WHEN last_seen_at < NOW() - INTERVAL '2 minute' THEN 0
|
|
39
|
+
ELSE 1
|
|
40
|
+
END AS status
|
|
41
|
+
FROM zoekt_nodes;
|
|
42
|
+
SQL
|
|
43
|
+
|
|
34
44
|
ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY = <<~SQL.freeze
|
|
35
45
|
SELECT
|
|
36
46
|
COUNT(*)
|
|
@@ -58,7 +68,8 @@ module GitLab
|
|
|
58
68
|
|
|
59
69
|
{
|
|
60
70
|
task_processing_query_result: execute(ZOEKT_TASKS_PROCESSING_QUERY, [Time.now.utc]),
|
|
61
|
-
repositories_schema_version_query_result: repositories_schema_version_query_result
|
|
71
|
+
repositories_schema_version_query_result: repositories_schema_version_query_result,
|
|
72
|
+
zoekt_nodes_status_query_result: execute(ZOEKT_NODES_STATUS_QUERY)
|
|
62
73
|
}.compact
|
|
63
74
|
end
|
|
64
75
|
|
|
@@ -119,13 +130,23 @@ module GitLab
|
|
|
119
130
|
|
|
120
131
|
# The prober which is called when gathering metrics
|
|
121
132
|
class ZoektProber
|
|
122
|
-
PrometheusMetrics.describe(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
PrometheusMetrics.describe(
|
|
134
|
+
"search_zoekt_task_processing_queue_size",
|
|
135
|
+
"Number of tasks waiting to be processed by Zoekt",
|
|
136
|
+
"gauge"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
PrometheusMetrics.describe(
|
|
140
|
+
"search_zoekt_repositories_schema_version_count",
|
|
141
|
+
"Number of zoekt_repositories which do not have the latest schema version",
|
|
142
|
+
"gauge"
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
PrometheusMetrics.describe(
|
|
146
|
+
"search_zoekt_nodes_status",
|
|
147
|
+
"Status of each zoekt_node. 0 is offline (last seen more than 2 minutes ago), 1 is online",
|
|
148
|
+
"gauge"
|
|
149
|
+
)
|
|
129
150
|
|
|
130
151
|
def initialize(metrics: PrometheusMetrics.new, **opts)
|
|
131
152
|
@metrics = metrics
|
|
@@ -140,6 +161,9 @@ module GitLab
|
|
|
140
161
|
results[:repositories_schema_version_query_result]&.each do |row|
|
|
141
162
|
add_zoekt_repositories_by_schema_version_to_metric(row)
|
|
142
163
|
end
|
|
164
|
+
results[:zoekt_nodes_status_query_result]&.each do |row|
|
|
165
|
+
add_zoekt_nodes_status_to_metric(row)
|
|
166
|
+
end
|
|
143
167
|
|
|
144
168
|
self
|
|
145
169
|
rescue PG::ConnectionBad
|
|
@@ -164,6 +188,14 @@ module GitLab
|
|
|
164
188
|
)
|
|
165
189
|
end
|
|
166
190
|
|
|
191
|
+
def add_zoekt_nodes_status_to_metric(row)
|
|
192
|
+
@metrics.add(
|
|
193
|
+
"search_zoekt_nodes_status",
|
|
194
|
+
row["status"].to_i,
|
|
195
|
+
zoekt_node_id: row["id"]
|
|
196
|
+
)
|
|
197
|
+
end
|
|
198
|
+
|
|
167
199
|
def write_to(target)
|
|
168
200
|
target.write(@metrics.to_s)
|
|
169
201
|
end
|
data/spec/database/zoekt_spec.rb
CHANGED
|
@@ -9,6 +9,8 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
9
9
|
let(:zoekt_nodes_query_results) { [{ "id" => "1", "schema_version" => "2302" }] }
|
|
10
10
|
let(:zoekt_enabled_query) { described_class::ZOEKT_ENABLED_QUERY }
|
|
11
11
|
let(:zoekt_repository_schema_version_query) { described_class::ZOEKT_REPOSITORY_SCHEMA_VERSION_QUERY }
|
|
12
|
+
let(:zoekt_nodes_status_query) { described_class::ZOEKT_NODES_STATUS_QUERY }
|
|
13
|
+
let(:zoekt_nodes_status_query_results) { [{ "id" => "1", "status" => "1" }] }
|
|
12
14
|
|
|
13
15
|
let(:zoekt_repository_schema_version_query_results) { [{ "count" => "1" }] }
|
|
14
16
|
|
|
@@ -45,7 +47,8 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
45
47
|
let(:result) do
|
|
46
48
|
{
|
|
47
49
|
repositories_schema_version_query_result: zoekt_repositories_schema_version_query_results,
|
|
48
|
-
task_processing_query_result: zoekt_tasks_processing_query_results
|
|
50
|
+
task_processing_query_result: zoekt_tasks_processing_query_results,
|
|
51
|
+
zoekt_nodes_status_query_result: zoekt_nodes_status_query_results
|
|
49
52
|
}
|
|
50
53
|
end
|
|
51
54
|
|
|
@@ -75,6 +78,8 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
75
78
|
.and_return(zoekt_nodes_query_results)
|
|
76
79
|
expect(connection).to receive(:exec_params).with(zoekt_repository_schema_version_query, %w[1 2302])
|
|
77
80
|
.and_return(zoekt_repository_schema_version_query_results)
|
|
81
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_status_query, [])
|
|
82
|
+
.and_return(zoekt_nodes_status_query_results)
|
|
78
83
|
|
|
79
84
|
expect(collector.run).to eq(result)
|
|
80
85
|
end
|
|
@@ -85,6 +90,8 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
85
90
|
.and_raise(PG::UndefinedTable)
|
|
86
91
|
allow(connection).to receive(:exec_params).with(zoekt_nodes_query, [])
|
|
87
92
|
.and_raise(PG::UndefinedTable)
|
|
93
|
+
allow(connection).to receive(:exec_params).with(zoekt_nodes_status_query, [])
|
|
94
|
+
.and_raise(PG::UndefinedTable)
|
|
88
95
|
|
|
89
96
|
expect(collector.run).to eq({})
|
|
90
97
|
end
|
|
@@ -98,6 +105,7 @@ describe GitLab::Exporter::Database::ZoektCollector do
|
|
|
98
105
|
.and_return(zoekt_nodes_query_results)
|
|
99
106
|
expect(connection).to receive(:exec_params).with(zoekt_repository_schema_version_query, %w[1 2302])
|
|
100
107
|
.and_raise(PG::UndefinedTable)
|
|
108
|
+
expect(connection).to receive(:exec_params).with(zoekt_nodes_status_query, []).and_raise(PG::UndefinedTable)
|
|
101
109
|
|
|
102
110
|
expect(collector.run).to eq({ task_processing_query_result: zoekt_tasks_processing_query_results })
|
|
103
111
|
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: 16.
|
|
4
|
+
version: 16.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pablo Carranza
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.5.
|
|
19
|
+
version: 2.5.5
|
|
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: 2.5.
|
|
26
|
+
version: 2.5.5
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: deep_merge
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -72,14 +72,14 @@ dependencies:
|
|
|
72
72
|
requirements:
|
|
73
73
|
- - '='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
75
|
+
version: 7.1.0
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - '='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version:
|
|
82
|
+
version: 7.1.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: quantile
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|