class Bigcommerce::Prometheus::TypeCollectors::Base
Base
type collector class
Attributes
type[R]
Public Class Methods
new(type: nil, default_labels: {})
click to toggle source
@param [String] type @param [Hash] default_labels
Calls superclass method
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 31 def initialize(type: nil, default_labels: {}) super() @type = type || self.class.to_s.downcase.gsub('::', '_').gsub('typecollector', '') @default_labels = default_labels || {} @metrics = build_metrics end
Public Instance Methods
collect(data)
click to toggle source
Collect metrics from input data
@param [Hash] data
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 59 def collect(data) custom_labels = data.fetch('custom_labels', nil) labels = custom_labels.nil? ? @default_labels : @default_labels.merge(custom_labels) collect_metrics(data: data, labels: labels) end
metric(key)
click to toggle source
@param [Symbol] key
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 50 def metric(key) @metrics.fetch(key.to_sym, nil) end
metrics()
click to toggle source
@return [Array]
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 41 def metrics return [] unless @metrics.any? @metrics.values end
Private Instance Methods
build_metrics()
click to toggle source
Build and return all observable metrics. This should be a hash of symbol keys that map to PrometheusExporter::Metric::Base objects.
@return [Hash]
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 80 def build_metrics {} end
collect_metrics(*)
click to toggle source
Collect metrics. Implementations of translating metrics to observed calls should happen here.
# File lib/bigcommerce/prometheus/type_collectors/base.rb, line 70 def collect_metrics(*) raise NotImplementedError, 'Must implement collect_metrics' end