class Fluent::Plugin::Prometheus::Histogram

Public Class Methods

new(element, registry, labels) click to toggle source
Calls superclass method Fluent::Plugin::Prometheus::Metric::new
# File lib/fluent/plugin/prometheus.rb, line 263
def initialize(element, registry, labels)
  super
  if @key.nil?
    raise ConfigError, "histogram metric requires 'key' option"
  end

  begin
    if element['buckets']
      buckets = element['buckets'].split(/,/).map(&:strip).map do |e|
        e[/\A\d+.\d+\Z/] ? e.to_f : e.to_i
      end
      @histogram = registry.histogram(element['name'].to_sym, element['desc'], {}, buckets)
    else
      @histogram = registry.histogram(element['name'].to_sym, element['desc'])
    end
  rescue ::Prometheus::Client::Registry::AlreadyRegisteredError
    @histogram = Fluent::Plugin::Prometheus::Metric.get(registry, element['name'].to_sym, :histogram, element['desc'])
  end
end

Public Instance Methods

instrument(record, expander) click to toggle source
# File lib/fluent/plugin/prometheus.rb, line 283
def instrument(record, expander)
  if @key.is_a?(String)
    value = record[@key]
  else
    value = @key.call(record)
  end
  if value
    @histogram.observe(labels(record, expander), value)
  end
end