mirror of
https://github.com/gitlabhq/gitlabhq.git
synced 2025-08-03 15:58:20 +00:00
73 lines
1.8 KiB
Ruby
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
|