class Fluent::Plugin::PrometheusOutputMetric

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/fluent/plugin/out_prometheus_metric.rb, line 9
def initialize
  super
  @registry = ::Prometheus::Client.registry
end

Public Instance Methods

multi_workers_ready?() click to toggle source
# File lib/fluent/plugin/out_prometheus_metric.rb, line 14
def multi_workers_ready?
  true
end
process(tag, es) click to toggle source
# File lib/fluent/plugin/out_prometheus_metric.rb, line 20
def process(tag, es)
  # Write out values in event stream to Registry
  es.each do |time, record|
    # Create metric if not exists
    begin
      desc = "fluentd message stream with tag: ${tag}"
      gauge = @registry.gauge(tag.to_sym, desc.sub!("${tag}", tag))
    rescue ::Prometheus::Client::Registry::AlreadyRegisteredError
      gauge = @registry.get(tag.to_sym)
    end
    value = record[@key]
    if value
      record.tap do |hs| 
        hs.delete(@key)
        hs.delete('timestamp')
      end
      # set labels as all elements in message besides the key
      gauge.set(record.transform_keys(&:to_sym), value)
    end
  end
end