class GitLab::Exporter::Prober

A class to combine multiple probers into one

Public Class Methods

new(metrics: PrometheusMetrics.new, logger: nil, **prober_opts) click to toggle source
# File lib/gitlab_exporter/prober.rb, line 5
def initialize(metrics: PrometheusMetrics.new, logger: nil, **prober_opts)
  @prober_opts = prober_opts
  @metrics     = metrics
  @logger      = logger

  resolve_prober_classes
end

Public Instance Methods

probe_all() click to toggle source
# File lib/gitlab_exporter/prober.rb, line 13
def probe_all
  @prober_opts.each do |_probe_name, params|
    Utils.wrap_in_array(params[:opts]).each do |opts|
      prober = params[:class].new(metrics: @metrics, logger: @logger, **opts)
      params[:methods].each do |meth|
        prober.send(meth)
      end
    end
  end
end
write_to(target) click to toggle source
# File lib/gitlab_exporter/prober.rb, line 24
def write_to(target)
  target.write(@metrics.to_s)
end

Private Instance Methods

resolve_prober_classes() click to toggle source
# File lib/gitlab_exporter/prober.rb, line 30
def resolve_prober_classes
  @prober_opts.each do |probe_name, params|
    prober_class_name = params[:class_name] || Utils.camel_case_string("#{probe_name}_prober")

    klass = prober_class_name.split("::").reduce(GitLab::Exporter) { |a, e| a.const_get(e) }

    params[:class] = klass
  end
end