Class: Salus::CollectdRenderer

Inherits:
BaseRenderer show all
Defined in:
lib/salus/renderer/collectd.rb

Instance Method Summary collapse

Methods inherited from BaseRenderer

descendants, inherited, #iterate

Methods included from Logging

#log

Constructor Details

#initialize(opts = {}) ⇒ CollectdRenderer

Returns a new instance of CollectdRenderer.



3
4
5
6
# File 'lib/salus/renderer/collectd.rb', line 3

def initialize(opts={})
  opts[:separator] = opts.fetch(:separator, '/')
  super(opts)
end

Instance Method Details

#render(data) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/salus/renderer/collectd.rb', line 8

def render(data)
  hostname = ENV.fetch('COLLECTD_HOSTNAME', 'localhost')
  options  = ENV.key?('COLLECTD_INTERVAL') ? "interval=#{ENV['COLLECTD_INTERVAL']} " : ''
  iterate(data) do |name, metric|
    # Text metrics are unsupported
    next if metric.is_a? Salus::Text
    unless metric.timestamp.nil?
      # Effectively all salus metrics are gauges for collectd, with exception to text
      STDOUT.puts "PUTVAL #{hostname}#{@separator}#{name} #{options}#{metric.timestamp.to_i}:#{metric.value.nil? ? 'U' : metric.value}"
    end
  end
end