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