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