Class: GitLab::Exporter::Database::ZoektProber

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab_exporter/database/zoekt.rb

Overview

The prober which is called when gathering metrics

Instance Method Summary collapse

Constructor Details

#initialize(metrics: PrometheusMetrics.new, **opts) ⇒ ZoektProber

Returns a new instance of ZoektProber.



151
152
153
154
# File 'lib/gitlab_exporter/database/zoekt.rb', line 151

def initialize(metrics: PrometheusMetrics.new, **opts)
  @metrics = metrics
  @collector = opts[:collector] || ZoektCollector.new(**opts)
end

Instance Method Details

#add_processing_zoekt_tasks_to_metric(row) ⇒ Object



173
174
175
176
177
178
179
180
# File 'lib/gitlab_exporter/database/zoekt.rb', line 173

def add_processing_zoekt_tasks_to_metric(row)
  @metrics.add(
    "search_zoekt_task_processing_queue_size",
    row["task_count"].to_i,
    node_name: row["node_name"],
    node_id: row["node_id"]
  )
end

#add_zoekt_nodes_status_to_metric(row) ⇒ Object



191
192
193
194
195
196
197
# File 'lib/gitlab_exporter/database/zoekt.rb', line 191

def add_zoekt_nodes_status_to_metric(row)
  @metrics.add(
    "search_zoekt_nodes_status",
    row["status"].to_i,
    zoekt_node_id: row["id"]
  )
end

#add_zoekt_repositories_by_schema_version_to_metric(row) ⇒ Object



182
183
184
185
186
187
188
189
# File 'lib/gitlab_exporter/database/zoekt.rb', line 182

def add_zoekt_repositories_by_schema_version_to_metric(row)
  @metrics.add(
    "search_zoekt_repositories_schema_version_count",
    row[:unfinished_repository_count].to_i,
    target_schema_version: row[:target_schema_version],
    zoekt_node_id: row[:zoekt_node_id]
  )
end

#probe_dbObject



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/gitlab_exporter/database/zoekt.rb', line 156

def probe_db
  results = @collector.run
  results[:task_processing_query_result].to_a.each do |row|
    add_processing_zoekt_tasks_to_metric(row)
  end
  results[:repositories_schema_version_query_result]&.each do |row|
    add_zoekt_repositories_by_schema_version_to_metric(row)
  end
  results[:zoekt_nodes_status_query_result]&.each do |row|
    add_zoekt_nodes_status_to_metric(row)
  end

  self
rescue PG::ConnectionBad
  self
end

#write_to(target) ⇒ Object



199
200
201
# File 'lib/gitlab_exporter/database/zoekt.rb', line 199

def write_to(target)
  target.write(@metrics.to_s)
end