Class: Malevich::Responder::Udp
- Inherits:
-
Object
- Object
- Malevich::Responder::Udp
- 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
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #event_from_hash(hash = nil) ⇒ Object
- #event_from_json(str) ⇒ Object
-
#initialize ⇒ Udp
constructor
A new instance of Udp.
- #process(data, src) ⇒ Object
- #run! ⇒ Object
Methods included from Mixin
Constructor Details
#initialize ⇒ Udp
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
#name ⇒ Object (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. 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 |