Files
gitlab-ce/lib/gitlab/metrics/labkit.rb
2025-07-08 15:11:55 +00:00

73 lines
1.8 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module Metrics
module Labkit
extend ActiveSupport::Concern
class_methods do
def client
::Labkit::Metrics::Client
end
def null_metric
::Labkit::Metrics::Null.instance
end
def reset_registry!
@prometheus_metrics_enabled = nil
client.reset!
end
def counter(name, docstring, base_labels = {})
when_metrics_enabled do
client.counter(name, docstring, base_labels)
end
end
def summary(name, docstring, base_labels = {})
when_metrics_enabled do
client.summary(name, docstring, base_labels)
end
end
def gauge(name, docstring, base_labels = {}, multiprocess_mode = :all)
when_metrics_enabled do
client.gauge(name, docstring, base_labels, multiprocess_mode)
end
end
def histogram(name, docstring, base_labels = {}, buckets = ::Prometheus::Client::Histogram::DEFAULT_BUCKETS)
when_metrics_enabled do
client.histogram(name, docstring, base_labels, buckets)
end
end
def error_detected!
@prometheus_metrics_enabled = nil
client.disable!
end
def prometheus_metrics_enabled?
prometheus_metrics_enabled_memoized
end
private
def when_metrics_enabled
if prometheus_metrics_enabled?
yield
else
null_metric
end
end
def prometheus_metrics_enabled_memoized
@prometheus_metrics_enabled ||=
(client.enabled? && Gitlab::CurrentSettings.prometheus_metrics_enabled) || false
end
end
end
end
end