Class: Malevich::Responder::Udp

Inherits:
Object
  • Object
show all
Includes:
Mixin
Defined in:
lib/malevich/responders/udp.rb

Constant Summary collapse

RIEMANN_RESERVED_FIELDS =
[
    :time,
    :state,
    :service,
    :host,
    :description,
    :metric,
    :tags,
    :ttl
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Mixin

#log, #malevich

Constructor Details

#initializeUdp

Returns a new instance of Udp.



22
23
24
25
# File 'lib/malevich/responders/udp.rb', line 22

def initialize
  @host, @port = malevich.cmd[:'udp-responder'].split(':')
  @name = 'udp api'
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



20
21
22
# File 'lib/malevich/responders/udp.rb', line 20

def name
  @name
end

Instance Method Details

#event_from_hash(hash = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/malevich/responders/udp.rb', line 37

def event_from_hash(hash=nil)
  new_hash = Hash.new
  RIEMANN_RESERVED_FIELDS.each do |key|
    new_hash[key] = hash[key] || hash[key.to_s]
  end
  new_hash[:host] ||= malevich.ohai[:fqdn]
  new_hash[:tags] ||= malevich.cmd.tags
  new_hash
end

#event_from_json(str) ⇒ Object



47
48
49
# File 'lib/malevich/responders/udp.rb', line 47

def event_from_json(str)
  event_from_hash(JSON.parse(str))
end

#process(data, src) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/malevich/responders/udp.rb', line 27

def process(data, src)
  begin
    malevich.riemann_events << event_from_json(data)
    src.reply "sended\n\n"
  rescue
    log :error, "Failed to send message: #{data.inspect}"
    src.reply "failed to send: #{data.inspect}\n"
  end
end

#run!Object



51
52
53
54
55
56
57
# File 'lib/malevich/responders/udp.rb', line 51

def run!
  log :unknown, "Start udp server at #{@host}:#{@port}"
  Socket.udp_server_loop(@host, @port) do |data, src|
    log :debug, "Received data: #{data.inspect}, from client: #{src.inspect}"
    process(data, src)
  end
end