Class: Reacter::Message::CollectdParser

Inherits:
Parser
  • Object
show all
Defined in:
lib/reacter/parsers/collectd.rb

Class Method Summary collapse

Methods inherited from Parser

configure

Class Method Details

.detected?(message) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
# File 'lib/reacter/parsers/collectd.rb', line 7

def detected?(message)
  (message[0..6] == 'PUTVAL ')
end

.dump(message) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/reacter/parsers/collectd.rb', line 26

def dump(message)
  message = message.to_h if message.is_a?(Message)
  return nil unless message.is_a?(Hash)
  return nil unless message[:source]
  return nil unless message[:metric]
  return nil unless message[:value]
  return nil unless message[:time]

  ([
    'PUTVAL',
    "#{message[:source]}/#{message[:metric]}",
    (message[:attributes] || {}).collect{|k,v| "#{k}=#{v}"}.join(';'),
    "#{(message[:time] / 1000).to_i}:#{message[:value]}"
  ].join(' ')).strip
end

.parse(message) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/reacter/parsers/collectd.rb', line 11

def parse(message)
  message = message.split(' ')
  source, plugin, type = message[1].split('/')
  attributes = Hash[message[2].split(';').collect{|i| i.split('=',2) }]
  time, value = message[3].split(':')

  {
    :source     => source,
    :metric     => [plugin, type].join('.'),
    :time       => (time.to_i * 1000),
    :value      => value.to_f,
    :attributes => attributes
  }
end