class GmonPacket
Public Class Methods
new(packet)
click to toggle source
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 15 def initialize(packet) @xdr=XDR::Reader.new(StringIO.new(packet)) # Read packet type type=@xdr.uint32 case type when 128 @type=:meta when 129 @type=:ushort when 130 @type=:short when 131 @type=:int when 132 @type=:uint when 133 @type=:string when 134 @type=:float when 135 @type=:double when 136 @type=:meta_request else @type=:unknown end end
Public Instance Methods
data?()
click to toggle source
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 48 def data? [:ushort, :short, :int, :uint, :string, :float, :double].include? @type end
heartbeat?()
click to toggle source
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 44 def heartbeat? @type == :hearbeat end
meta?()
click to toggle source
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 52 def meta? @type == :meta end
parse_data(metadata)
click to toggle source
Parsing a data packet : type 133..135 Requires metadata to be available for correct parsing of the value
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 97 def parse_data(metadata) data=Hash.new data['hostname']=@xdr.string metricname=@xdr.string data['name']=metricname data['spoof']=@xdr.uint32 data['format']=@xdr.string data['val']=parse_value(@type) # If we received a packet, last update was 0 time ago data['tn']=0 return data end
parse_metadata()
click to toggle source
Parsing a metadata packet : type 128
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 57 def parse_metadata meta=Hash.new meta['hostname']=@xdr.string meta['name']=@xdr.string meta['spoof']=@xdr.uint32 meta['type']=@xdr.string meta['name2']=@xdr.string meta['units']=@xdr.string slope=@xdr.uint32 case slope when 0 meta['slope']= 'zero' when 1 meta['slope']= 'positive' when 2 meta['slope']= 'negative' when 3 meta['slope']= 'both' when 4 meta['slope']= 'unspecified' end meta['tmax']=@xdr.uint32 meta['dmax']=@xdr.uint32 nrelements=@xdr.uint32 meta['nrelements']=nrelements unless nrelements.nil? extra={} for i in 1..nrelements name=@xdr.string extra[name]=@xdr.string end meta['extra']=extra end return meta end
parse_value(type)
click to toggle source
Parsing a specific value of type github.com/ganglia/monitor-core/blob/master/gmond/gmond.c#L1527
# File lib/logstash/inputs/ganglia/gmondpacket.rb, line 116 def parse_value(type) value=:unknown case type when :short value=@xdr.int16 when :ushort value=@xdr.uint16 when :int value=@xdr.int32 when :uint value=@xdr.uint32 when :float value=@xdr.float32 when :double value=@xdr.float64 when :string value=@xdr.string else #puts "Received unknown type #{type}" end return value end