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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60e275e1cea2b8841c1c8471f44d851a49b552ede909c91aca462ad60efcd3ab
4
- data.tar.gz: 59c1f60fc4caed54da0048db13c3dd1566fd70bbb744f3260c16cca78012c018
3
+ metadata.gz: dfb5ffd66eceaaada65415073b18a42568888669d775689fbf2aaf3e58b02d7f
4
+ data.tar.gz: 2cda7d12814c7164425331e2be436000dc91ea8551387ce207bfafe49bcc69aa
5
5
  SHA512:
6
- metadata.gz: e790d3ec4ebb7e07546d5565dc14fdc62f1131b3b23cf367c502eb12e7d7ed55051dd79fed6e8c865af464d1b120eaf2fe6f4f72f3a6a581915adc342b446ad2
7
- data.tar.gz: 829b42af76274c5ff4b25c9094545ea42491fc41f16bae2dec96cd3a76450beb7cca40496bbc10f926f75b0bcaa509fb9a4001a3f83b2e7dc3f1031b7554d0d3
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.2.0)
5
- connection_pool (= 2.5.4)
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 (= 6.6.1)
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.4)
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 (6.6.1)
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.1)
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)
@@ -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.4"
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", "6.6.1"
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("search_zoekt_task_processing_queue_size",
123
- "Number of tasks waiting to be processed by Zoekt",
124
- "gauge")
125
-
126
- PrometheusMetrics.describe("search_zoekt_repositories_schema_version_count",
127
- "Number of zoekt_repositories which do not have the latest schema version",
128
- "gauge")
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
@@ -1,5 +1,5 @@
1
1
  module GitLab
2
2
  module Exporter
3
- VERSION = "16.2.0".freeze
3
+ VERSION = "16.3.1".freeze
4
4
  end
5
5
  end
@@ -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.2.0
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.4
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.4
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: 6.6.1
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: 6.6.1
82
+ version: 7.1.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: quantile
85
85
  requirement: !ruby/object:Gem::Requirement