Class: Salus::ZabbixBulkRenderer

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

Instance Method Summary collapse

Methods inherited from BaseRenderer

descendants, inherited, #iterate

Methods included from Logging

#log

Constructor Details

#initialize(opts = {}) ⇒ ZabbixBulkRenderer

Returns a new instance of ZabbixBulkRenderer.



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

def initialize(opts={})
  super(opts)
  @group = opts.fetch(:group, nil)
end

Instance Method Details

#render(data) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/salus/renderer/zabbixbulk.rb', line 8

def render(data)
  # Zabbix 3.4+ with preprocessor
  result = {}
  re = @group.nil? ? // : /^#{Regexp.escape(@group)}\./
  iterate(data) do |name, metric|
    next unless name.match(re)
    name  = name.sub(re, '')
    name  = name.gsub(/\.\[/, '[')

    unless metric.timestamp.nil?
      parts = name.split(/\./)
      node  = result
      parts[0...-1].each do |part|
        node[part] = {} unless node.key?(part)
        node = node[part]
      end
      node[parts.last] = metric.value
    end
  end
  STDOUT.puts result.to_json
end