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.



153
154
155
156
# File 'lib/gitlab_exporter/database/zoekt.rb', line 153

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



175
176
177
178
179
180
181
182
183
184
# File 'lib/gitlab_exporter/database/zoekt.rb', line 175

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"]
    }.compact
  )
end

#add_zoekt_nodes_status_to_metric(row) ⇒ Object



198
199
200
201
202
203
204
205
206
207
# File 'lib/gitlab_exporter/database/zoekt.rb', line 198

def add_zoekt_nodes_status_to_metric(row)
  @metrics.add(
    "search_zoekt_nodes_status",
    row["status"].to_i,
    **{
      zoekt_node_id: row["id"],
      zoekt_node_name: row["node_name"]
    }.compact
  )
end

#add_zoekt_repositories_by_schema_version_to_metric(row) ⇒ Object



186
187
188
189
190
191
192
193
194
195
196
# File 'lib/gitlab_exporter/database/zoekt.rb', line 186

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],
      zoekt_node_name: row[:zoekt_node_name]
    }.compact
  )
end

#probe_dbObject



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

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



209
210
211
# File 'lib/gitlab_exporter/database/zoekt.rb', line 209

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