Class: Labkit::Metrics::Client
- Inherits:
-
Object
- Object
- Labkit::Metrics::Client
- Extended by:
- Forwardable
- Includes:
- Singleton
- Defined in:
- lib/labkit/metrics/client.rb
Overview
A thin wrapper around Prometheus::Client from the prometheus-client-mmap gem gitlab.com/gitlab-org/ruby/gems/prometheus-client-mmap
Instance Method Summary collapse
- #counter(name, docstring, base_labels = {}) ⇒ Object
- #disable! ⇒ Object
- #enable! ⇒ Object
- #enabled? ⇒ Boolean
- #gauge(name, docstring, base_labels = {}, multiprocess_mode = :all) ⇒ Object
- #get(metric_name) ⇒ Object
- #histogram(name, docstring, base_labels = {}, buckets = Prometheus::Client::Histogram::DEFAULT_BUCKETS) ⇒ Object
-
#initialize ⇒ Client
constructor
A new instance of Client.
- #metrics_folder_present? ⇒ Boolean
- #reset! ⇒ Object
- #safe_provide_metric(metric_type, name, *args) ⇒ Object
- #summary(name, docstring, base_labels = {}) ⇒ Object
- #wrapped_client ⇒ Object
Constructor Details
#initialize ⇒ Client
Returns a new instance of Client.
22 23 24 |
# File 'lib/labkit/metrics/client.rb', line 22 def initialize @enabled = Concurrent::AtomicBoolean.new(true) end |
Instance Method Details
#counter(name, docstring, base_labels = {}) ⇒ Object
53 54 55 |
# File 'lib/labkit/metrics/client.rb', line 53 def counter(name, docstring, base_labels = {}) safe_provide_metric(:counter, name, docstring, base_labels) end |
#disable! ⇒ Object
30 31 32 |
# File 'lib/labkit/metrics/client.rb', line 30 def disable! @enabled.make_false end |
#enable! ⇒ Object
34 35 36 |
# File 'lib/labkit/metrics/client.rb', line 34 def enable! @enabled.make_true end |
#enabled? ⇒ Boolean
38 39 40 |
# File 'lib/labkit/metrics/client.rb', line 38 def enabled? @enabled.true? && metrics_folder_present? end |
#gauge(name, docstring, base_labels = {}, multiprocess_mode = :all) ⇒ Object
67 68 69 |
# File 'lib/labkit/metrics/client.rb', line 67 def gauge(name, docstring, base_labels = {}, multiprocess_mode = :all) safe_provide_metric(:gauge, name, docstring, base_labels, multiprocess_mode) end |
#get(metric_name) ⇒ Object
75 76 77 |
# File 'lib/labkit/metrics/client.rb', line 75 def get(metric_name) Registry.get(metric_name) end |
#histogram(name, docstring, base_labels = {}, buckets = Prometheus::Client::Histogram::DEFAULT_BUCKETS) ⇒ Object
61 62 63 64 65 |
# File 'lib/labkit/metrics/client.rb', line 61 def histogram( name, docstring, base_labels = {}, buckets = Prometheus::Client::Histogram::DEFAULT_BUCKETS) safe_provide_metric(:histogram, name, docstring, base_labels, buckets) end |
#metrics_folder_present? ⇒ Boolean
48 49 50 51 |
# File 'lib/labkit/metrics/client.rb', line 48 def metrics_folder_present? dir = configuration.multiprocess_files_dir dir && Dir.exist?(dir) && File.writable?(dir) end |
#reset! ⇒ Object
71 72 73 |
# File 'lib/labkit/metrics/client.rb', line 71 def reset! Registry.reset! end |
#safe_provide_metric(metric_type, name, *args) ⇒ Object
42 43 44 45 46 |
# File 'lib/labkit/metrics/client.rb', line 42 def safe_provide_metric(metric_type, name, *args) return Null.instance unless enabled? Registry.safe_register(metric_type, name, *args) end |
#summary(name, docstring, base_labels = {}) ⇒ Object
57 58 59 |
# File 'lib/labkit/metrics/client.rb', line 57 def summary(name, docstring, base_labels = {}) safe_provide_metric(:summary, name, docstring, base_labels) end |
#wrapped_client ⇒ Object
26 27 28 |
# File 'lib/labkit/metrics/client.rb', line 26 def wrapped_client @client ||= ::Prometheus::Client end |