sFlow Library for EventMachine
Summary
This gem collects, parses, and optionally proxies sampled flow records from network switches and routers. For information about sFlow, refer to www.sflow.org.
Features
Version 1.0.0
-
Ability to parse the following sFlow messages: Raw Packet Header, Generic Interface Counter, Ethernet Interface Counter
-
All other sFlow messages are stubbed out. Their implementation should take no more than a few minutes for someone with access to an sFlow-capable device exporting these message types.
-
Ability to proxy a copy of the sFlow packet to a secondary collector.
Examples
Collector:
c = EventMachine::SFlow::Collector.new(:host => "127.0.0.1")
c.on_sflow do |pkt|
puts "Got #{pkt.samples.count} samples"
pkt.samples.each do |sample|
sample.records.each do |record|
if record.is_a? EM::SFlow::RawPacketHeader
puts "Received a sampled packet from #{pkt.agent} of length #{record.header.size}"
elsif record.is_a? EM::SFlow::GenericInterfaceCounters
puts "Interface #{record.if_index} on #{pkt.agent} has seen #{record.if_in_octets} inbound bytes, #{record.if_out_octets} outbound bytes"
end
end
end
end
Proxy:
c = EventMachine::SFlow::Collector.new(:host => "127.0.0.1")
c.proxy_to "192.168.1.1"
Multiple callbacks and proxy targets can be defined simultaneously
Change Log
Version 1.0.0:
-
Initial release
Credits
Author: Norman Elton [email protected]