Class: Salus::ZabbixSenderRenderer

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

Instance Method Summary collapse

Methods inherited from BaseRenderer

descendants, inherited, #initialize, #iterate

Methods included from Logging

#log

Constructor Details

This class inherits a constructor from Salus::BaseRenderer

Instance Method Details

#render(data) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/salus/renderer/zabbixsender.rb', line 3

def render(data)
  # Top level groups are considered hostnames
  result = {}
  data.each do |hostname, group|
    iterate(group) do |name, metric|
      unless metric.timestamp.nil?
        timestamp = metric.timestamp.to_i
        name  = name.gsub(/\.\[/, '[')
        name  = name.to_json if (name.match(/\s/))
        value = metric.value
        value = '""' if value.nil?
        value = value.to_json if (!value.nil? && metric.is_a?(Salus::Text))

        result[timestamp] = [] unless result.key?(timestamp)
        result[timestamp] << "#{hostname.dump} #{name} #{timestamp} #{value}"
      end
    end
  end
  # Zabbix requires timestamps to be sorted
  result.keys.sort.each { |k| STDOUT.puts result[k] }
end