class Yabeda::Prometheus::Adapter
Public Instance Methods
build_name(metric)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 76 def build_name(metric) [metric.group, metric.name, metric.unit].compact.join('_').to_sym end
debug!()
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 86 def debug! Yabeda.configure do group :prometheus_exporter histogram :render_duration, tags: %i[], unit: :seconds, buckets: [0.001, 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10], comment: "Time required to render all metrics in Prometheus format" end end
perform_counter_increment!(metric, tags, value)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 36 def perform_counter_increment!(metric, tags, value) registry.get(build_name(metric)).increment(by: value, labels: tags) rescue ::Prometheus::Client::LabelSetValidator::InvalidLabelSetError => e raise UndeclaredMetricTags.new(build_name(metric), e) end
perform_gauge_set!(metric, tags, value)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 52 def perform_gauge_set!(metric, tags, value) registry.get(build_name(metric)).set(value, labels: tags) rescue ::Prometheus::Client::LabelSetValidator::InvalidLabelSetError => e raise UndeclaredMetricTags.new(build_name(metric), e) end
perform_histogram_measure!(metric, tags, value)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 70 def perform_histogram_measure!(metric, tags, value) registry.get(build_name(metric)).observe(value, labels: tags) rescue ::Prometheus::Client::LabelSetValidator::InvalidLabelSetError => e raise UndeclaredMetricTags.new(build_name(metric), e) end
register_counter!(metric)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 26 def register_counter!(metric) validate_metric!(metric) registry.counter( build_name(metric), docstring: metric.comment, labels: Array(metric.tags), store_settings: store_settings(metric), ) end
register_gauge!(metric)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 42 def register_gauge!(metric) validate_metric!(metric) registry.gauge( build_name(metric), docstring: metric.comment, labels: Array(metric.tags), store_settings: store_settings(metric), ) end
register_histogram!(metric)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 58 def register_histogram!(metric) validate_metric!(metric) buckets = metric.buckets || ::Prometheus::Client::Histogram::DEFAULT_BUCKETS registry.histogram( build_name(metric), docstring: metric.comment, buckets: buckets, labels: Array(metric.tags), store_settings: store_settings(metric), ) end
registry()
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 22 def registry @registry ||= ::Prometheus::Client.registry end
validate_metric!(metric)
click to toggle source
# File lib/yabeda/prometheus/adapter.rb, line 80 def validate_metric!(metric) return if metric.comment raise ArgumentError, 'Prometheus require metrics to have comments' end
Private Instance Methods
store_settings(metric)
click to toggle source
@param metric [Yabeda::Metric] @return [Hash]
# File lib/yabeda/prometheus/adapter.rb, line 101 def store_settings(metric) case ::Prometheus::Client.config.data_store when ::Prometheus::Client::DataStores::Synchronized, ::Prometheus::Client::DataStores::SingleThreaded {} # Default synchronized store doesn't allow to pass any options when ::Prometheus::Client::DataStores::DirectFileStore, ::Object # Anything else { aggregation: metric.aggregation }.compact end end