logstash-codec-sflow 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -4
- data/lib/logstash/codecs/sflow.rb +17 -6
- data/lib/logstash/codecs/sflow/datagram.rb +2 -0
- data/lib/logstash/codecs/sflow/flow_record.rb +3 -0
- data/lib/logstash/codecs/sflow/packet_header.rb +0 -1
- data/lib/logstash/codecs/sflow/sample.rb +56 -1
- data/logstash-codec-sflow.gemspec +1 -1
- data/spec/codecs/sflow_spec.rb +4 -4
- metadata +17 -17
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c28971730da8f9f302c926868c06bdac25a0d9b0
         | 
| 4 | 
            +
              data.tar.gz: 6d114bd259a7194a9d61c8759c4c4bc2b400efce
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a6ef3af6d5a7f001997fa986c739eb0d2f23fb1857724ac4dbed38a211e69ca7f3518d778aed2e19d0e162a7c51695f02952d636bccf37bb4c22533e6221f0b7
         | 
| 7 | 
            +
              data.tar.gz: 36e2350656250450e8d3299062e299c1e959f30c13e08d1cde9ba96825be6fe919a7c9102a7d5f3286419abd7b70251a4faff639dfb1168e42aaab06976bde87
         | 
    
        data/README.md
    CHANGED
    
    | @@ -2,11 +2,11 @@ | |
| 2 2 | 
             
            ## Description
         | 
| 3 3 | 
             
            Logstash codec plugin to decode sflow codec.
         | 
| 4 4 |  | 
| 5 | 
            -
            This codec manage flow sample and counter flow | 
| 5 | 
            +
            This codec manage flow sample, counter flow, expanded flow sample and expanded counter flow
         | 
| 6 6 |  | 
| 7 | 
            -
            For the flow sample it is able to decode Ethernet, 802.1Q VLAN, IPv4, UDP and TCP header
         | 
| 7 | 
            +
            For the (expanded) flow sample it is able to decode Ethernet, 802.1Q VLAN, IPv4, UDP and TCP header
         | 
| 8 8 |  | 
| 9 | 
            -
            For the counter flow it is able to decode some records of type:
         | 
| 9 | 
            +
            For the (expanded) counter flow it is able to decode some records of type:
         | 
| 10 10 |  | 
| 11 11 | 
             
            - Generic Interface
         | 
| 12 12 | 
             
            - Ethernet Interface
         | 
| @@ -21,6 +21,25 @@ If needed you can aks for some to be added. | |
| 21 21 | 
             
            Please provide a pcap file containing the sflow events of the counter/protocol
         | 
| 22 22 | 
             
            to add in order to be able to implement it.
         | 
| 23 23 |  | 
| 24 | 
            +
            ## Tune reported fields
         | 
| 25 | 
            +
            By default all those fields are removed from the emitted event:
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
                %w(sflow_version header_size ip_header_length ip_dscp ip_ecn ip_total_length ip_identification ip_flags 
         | 
| 28 | 
            +
                ip_fragment_offset ip_ttl ip_checksum ip_options tcp_seq_number tcp_ack_number tcp_header_length tcp_reserved 
         | 
| 29 | 
            +
                tcp_is_nonce tcp_is_cwr tcp_is_ecn_echo tcp_is_urgent tcp_is_ack tcp_is_push tcp_is_reset tcp_is_syn tcp_is_fin 
         | 
| 30 | 
            +
                tcp_window_size tcp_checksum tcp_urgent_pointer tcp_options vlan_cfi sequence_number flow_sequence_number vlan_type 
         | 
| 31 | 
            +
                udp_length udp_checksum)
         | 
| 32 | 
            +
                
         | 
| 33 | 
            +
            You can tune the list of removed fields by setting this parameter to the sflow codec *optional_removed_field*
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            ## frame_length_times_sampling_rate output field on (expanded) flow sample
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            This field is the length of the frame times the sampling rate. It permits to approximate the number of bits send/receive 
         | 
| 38 | 
            +
            on an interface/socket.
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            You must first ensure to have well configured the sampling rate to have an accurate output metric (See: http://blog.sflow.com/2009/06/sampling-rates.html)
         | 
| 41 | 
            +
             | 
| 42 | 
            +
             | 
| 24 43 | 
             
            ## Human Readable Protocol
         | 
| 25 44 | 
             
            In order to translate protocols value to a human readable protocol, you can use the
         | 
| 26 45 | 
             
            logstash-filter-translate plugin
         | 
| @@ -55,7 +74,8 @@ filter { | |
| 55 74 | 
             
                  translate {
         | 
| 56 75 | 
             
                    field => ip_protocol
         | 
| 57 76 | 
             
                    dictionary => [ "6", "TCP",
         | 
| 58 | 
            -
                                    "17", "UDP"
         | 
| 77 | 
            +
                                    "17", "UDP",
         | 
| 78 | 
            +
                                    "50", "Encapsulating Security Payload"
         | 
| 59 79 | 
             
                                  ]
         | 
| 60 80 | 
             
                    fallback => "UNKNOWN"
         | 
| 61 81 | 
             
                    destination => ip_protocol
         | 
| @@ -107,16 +107,18 @@ class LogStash::Codecs::Sflow < LogStash::Codecs::Base | |
| 107 107 | 
             
                events = []
         | 
| 108 108 |  | 
| 109 109 | 
             
                decoded['samples'].each do |sample|
         | 
| 110 | 
            +
                  @logger.debug("sample: #{sample}")
         | 
| 110 111 | 
             
                  #Treat case with no flow decoded (Unknown flow)
         | 
| 111 112 | 
             
                  if sample['sample_data'].to_s.eql? ''
         | 
| 112 113 | 
             
                    @logger.warn("Unknown sample entreprise #{sample['sample_entreprise'].to_s} - format #{sample['sample_format'].to_s}")
         | 
| 113 114 | 
             
                    next
         | 
| 114 115 | 
             
                  end
         | 
| 115 116 |  | 
| 116 | 
            -
                  #treat sample flow
         | 
| 117 | 
            -
                  if sample['sample_entreprise'] == 0 && sample['sample_format'] == 1
         | 
| 117 | 
            +
                  #treat sample flow and expanded sample flow
         | 
| 118 | 
            +
                  if sample['sample_entreprise'] == 0 && (sample['sample_format'] == 1 || sample['sample_format'] == 3)
         | 
| 118 119 | 
             
                    # Create the logstash event
         | 
| 119 120 | 
             
                    event = LogStash::Event.new({})
         | 
| 121 | 
            +
             | 
| 120 122 | 
             
                    common_sflow(event, decoded, sample)
         | 
| 121 123 |  | 
| 122 124 | 
             
                    sample['sample_data']['records'].each do |record|
         | 
| @@ -134,15 +136,19 @@ class LogStash::Codecs::Sflow < LogStash::Codecs::Base | |
| 134 136 | 
             
                      event["frame_length_times_sampling_rate"] = event['frame_length'].to_i * event['sampling_rate'].to_i
         | 
| 135 137 | 
             
                    end
         | 
| 136 138 |  | 
| 137 | 
            -
                     | 
| 139 | 
            +
                    if sample['sample_format'] == 1
         | 
| 140 | 
            +
                      event["sflow_type"] = 'flow_sample'
         | 
| 141 | 
            +
                    else
         | 
| 142 | 
            +
                      event["sflow_type"] = 'expanded_flow_sample'
         | 
| 143 | 
            +
                    end
         | 
| 138 144 |  | 
| 139 145 | 
             
                    #Get interface dfescr if snmp_interface true
         | 
| 140 146 | 
             
                    snmp_call(event)
         | 
| 141 147 |  | 
| 142 148 | 
             
                    events.push(event)
         | 
| 143 149 |  | 
| 144 | 
            -
                  #treat counter flow
         | 
| 145 | 
            -
                  elsif sample['sample_entreprise'] == 0 && sample['sample_format'] == 2
         | 
| 150 | 
            +
                  #treat counter flow and expanded counter flow
         | 
| 151 | 
            +
                  elsif sample['sample_entreprise'] == 0 && (sample['sample_format'] == 2 || sample['sample_format'] == 4)
         | 
| 146 152 | 
             
                    sample['sample_data']['records'].each do |record|
         | 
| 147 153 | 
             
                      # Ensure that some data exist for the record
         | 
| 148 154 | 
             
                      if record['record_data'].to_s.eql? ''
         | 
| @@ -156,7 +162,12 @@ class LogStash::Codecs::Sflow < LogStash::Codecs::Base | |
| 156 162 |  | 
| 157 163 | 
             
                      assign_key_value(event, record)
         | 
| 158 164 |  | 
| 159 | 
            -
                       | 
| 165 | 
            +
                      if sample['sample_format'] == 2
         | 
| 166 | 
            +
                        event["sflow_type"] = 'counter_sample'
         | 
| 167 | 
            +
                      else
         | 
| 168 | 
            +
                        event["sflow_type"] = 'expanded_counter_sample'
         | 
| 169 | 
            +
                      end
         | 
| 170 | 
            +
             | 
| 160 171 |  | 
| 161 172 | 
             
                      #Get interface dfescr if snmp_interface true
         | 
| 162 173 | 
             
                      snmp_call(event)
         | 
| @@ -30,6 +30,8 @@ class SFlow < BinData::Record | |
| 30 30 | 
             
                choice :sample_data, :selection => lambda { "#{sample_entreprise}-#{sample_format}" } do
         | 
| 31 31 | 
             
                  flow_sample '0-1'
         | 
| 32 32 | 
             
                  counter_sample '0-2'
         | 
| 33 | 
            +
                  expanded_flow_sample '0-3'
         | 
| 34 | 
            +
                  expanded_counter_sample '0-4'
         | 
| 33 35 | 
             
                  skip :default, :length => :sample_length
         | 
| 34 36 | 
             
                end
         | 
| 35 37 | 
             
              end
         | 
| @@ -6,6 +6,8 @@ require 'logstash/codecs/sflow/packet_header' | |
| 6 6 |  | 
| 7 7 | 
             
            # noinspection RubyResolve
         | 
| 8 8 | 
             
            class RawPacketHeader < BinData::Record
         | 
| 9 | 
            +
              mandatory_parameter :record_length
         | 
| 10 | 
            +
             | 
| 9 11 | 
             
              endian :big
         | 
| 10 12 | 
             
              uint32 :protocol
         | 
| 11 13 | 
             
              uint32 :frame_length
         | 
| @@ -16,6 +18,7 @@ class RawPacketHeader < BinData::Record | |
| 16 18 | 
             
                ip_header 11, :size_header => lambda { header_size * 8 }
         | 
| 17 19 | 
             
                skip :default, :length => :header_size
         | 
| 18 20 | 
             
              end
         | 
| 21 | 
            +
              bit :padded, :nbits => lambda { (record_length - (header_size + 16)) * 8 } #padded data
         | 
| 19 22 | 
             
            end
         | 
| 20 23 |  | 
| 21 24 | 
             
            # noinspection RubyResolve
         | 
| @@ -21,7 +21,7 @@ class FlowSample < BinData::Record | |
| 21 21 | 
             
                bit12 :record_format
         | 
| 22 22 | 
             
                uint32 :record_length
         | 
| 23 23 | 
             
                choice :record_data, :selection => lambda { "#{record_entreprise}-#{record_format}" } do
         | 
| 24 | 
            -
                  raw_packet_header '0-1'
         | 
| 24 | 
            +
                  raw_packet_header '0-1', :record_length => :record_length
         | 
| 25 25 | 
             
                  ethernet_frame_data '0-2'
         | 
| 26 26 | 
             
                  ip4_data '0-3'
         | 
| 27 27 | 
             
                  ip6_data '0-4'
         | 
| @@ -56,3 +56,58 @@ class CounterSample < BinData::Record | |
| 56 56 | 
             
                #processor_information :record_data
         | 
| 57 57 | 
             
              end
         | 
| 58 58 | 
             
            end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            # noinspection RubyResolve
         | 
| 61 | 
            +
            class ExpandedFlowSample < BinData::Record
         | 
| 62 | 
            +
              endian :big
         | 
| 63 | 
            +
              uint32 :flow_sequence_number
         | 
| 64 | 
            +
              uint32 :source_id_type
         | 
| 65 | 
            +
              uint32 :source_id_index
         | 
| 66 | 
            +
              uint32 :sampling_rate
         | 
| 67 | 
            +
              uint32 :sample_pool
         | 
| 68 | 
            +
              uint32 :drops
         | 
| 69 | 
            +
              uint32 :input_interface_format
         | 
| 70 | 
            +
              uint32 :input_interface_value
         | 
| 71 | 
            +
              uint32 :output_interface_format
         | 
| 72 | 
            +
              uint32 :output_interface_value
         | 
| 73 | 
            +
              uint32 :record_count
         | 
| 74 | 
            +
              array :records, :initial_length => :record_count do
         | 
| 75 | 
            +
                bit20 :record_entreprise
         | 
| 76 | 
            +
                bit12 :record_format
         | 
| 77 | 
            +
                uint32 :record_length
         | 
| 78 | 
            +
                choice :record_data, :selection => lambda { "#{record_entreprise}-#{record_format}" } do
         | 
| 79 | 
            +
                  raw_packet_header '0-1', :record_length => :record_length
         | 
| 80 | 
            +
                      ethernet_frame_data '0-2'
         | 
| 81 | 
            +
                  ip4_data '0-3'
         | 
| 82 | 
            +
                  ip6_data '0-4'
         | 
| 83 | 
            +
                  extended_switch_data '0-1001'
         | 
| 84 | 
            +
                  extended_router_data '0-1002'
         | 
| 85 | 
            +
                  skip :default, :length => :record_length
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
            end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            # noinspection RubyResolve
         | 
| 91 | 
            +
            class ExpandedCounterSample < BinData::Record
         | 
| 92 | 
            +
              endian :big
         | 
| 93 | 
            +
              uint32 :sample_seq_number
         | 
| 94 | 
            +
              uint32 :source_id_type
         | 
| 95 | 
            +
              uint32 :source_id_index
         | 
| 96 | 
            +
              uint32 :record_count
         | 
| 97 | 
            +
              array :records, :initial_length => :record_count do
         | 
| 98 | 
            +
                bit20 :record_entreprise
         | 
| 99 | 
            +
                bit12 :record_format
         | 
| 100 | 
            +
                uint32 :record_length
         | 
| 101 | 
            +
                choice :record_data, :selection => lambda { "#{record_entreprise}-#{record_format}" } do
         | 
| 102 | 
            +
                  generic_interface '0-1'
         | 
| 103 | 
            +
                  ethernet_interfaces '0-2'
         | 
| 104 | 
            +
                  token_ring '0-3'
         | 
| 105 | 
            +
                  hundred_base_vg '0-4'
         | 
| 106 | 
            +
                  vlan '0-5'
         | 
| 107 | 
            +
                  processor_information '0-1001'
         | 
| 108 | 
            +
                  http_counters '0-2201'
         | 
| 109 | 
            +
                  skip :default, :length => :record_length
         | 
| 110 | 
            +
                end
         | 
| 111 | 
            +
                #processor_information :record_data
         | 
| 112 | 
            +
              end
         | 
| 113 | 
            +
            end
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            Gem::Specification.new do |s|
         | 
| 2 2 |  | 
| 3 3 | 
             
              s.name = 'logstash-codec-sflow'
         | 
| 4 | 
            -
              s.version = '1. | 
| 4 | 
            +
              s.version = '1.2.0'
         | 
| 5 5 | 
             
              s.licenses = ['Apache License (2.0)']
         | 
| 6 6 | 
             
              s.summary = 'The sflow codec is for decoding SFlow v5 flows.'
         | 
| 7 7 | 
             
              s.description = 'This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program'
         | 
    
        data/spec/codecs/sflow_spec.rb
    CHANGED
    
    | @@ -7,21 +7,21 @@ require "logstash/codecs/sflow/datagram" | |
| 7 7 | 
             
            describe SFlow do
         | 
| 8 8 | 
             
              it "should decode sflow counters" do
         | 
| 9 9 | 
             
                payload = IO.read(File.join(File.dirname(__FILE__), "sflow_counters_sample.dat"), :mode => "rb")
         | 
| 10 | 
            -
                 | 
| 10 | 
            +
                SFlow.read(payload)
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 13 | 
             
              it "should decode sflow 1 counters" do
         | 
| 14 14 | 
             
                payload = IO.read(File.join(File.dirname(__FILE__), "sflow_1_counters_sample.dat"), :mode => "rb")
         | 
| 15 | 
            -
                 | 
| 15 | 
            +
                SFlow.read(payload)
         | 
| 16 16 | 
             
              end
         | 
| 17 17 |  | 
| 18 18 | 
             
              it "should decode sflow sample" do
         | 
| 19 19 | 
             
                payload = IO.read(File.join(File.dirname(__FILE__), "sflow_flow_sample.dat"), :mode => "rb")
         | 
| 20 | 
            -
                 | 
| 20 | 
            +
                SFlow.read(payload)
         | 
| 21 21 | 
             
              end
         | 
| 22 22 |  | 
| 23 23 | 
             
              it "should decode sflow sample eth vlan" do
         | 
| 24 24 | 
             
                payload = IO.read(File.join(File.dirname(__FILE__), "sflow_flow_sample_eth_vlan.dat"), :mode => "rb")
         | 
| 25 | 
            -
                 | 
| 25 | 
            +
                SFlow.read(payload)
         | 
| 26 26 | 
             
              end
         | 
| 27 27 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,22 +1,22 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: logstash-codec-sflow
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Nicolas Fraison
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-08- | 
| 11 | 
            +
            date: 2016-08-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 15 15 | 
             
                requirements:
         | 
| 16 | 
            -
                - -  | 
| 16 | 
            +
                - - ">="
         | 
| 17 17 | 
             
                  - !ruby/object:Gem::Version
         | 
| 18 18 | 
             
                    version: 1.4.0
         | 
| 19 | 
            -
                - - <
         | 
| 19 | 
            +
                - - "<"
         | 
| 20 20 | 
             
                  - !ruby/object:Gem::Version
         | 
| 21 21 | 
             
                    version: 3.0.0
         | 
| 22 22 | 
             
              name: logstash-core
         | 
| @@ -24,16 +24,16 @@ dependencies: | |
| 24 24 | 
             
              type: :runtime
         | 
| 25 25 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 26 | 
             
                requirements:
         | 
| 27 | 
            -
                - -  | 
| 27 | 
            +
                - - ">="
         | 
| 28 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 29 | 
             
                    version: 1.4.0
         | 
| 30 | 
            -
                - - <
         | 
| 30 | 
            +
                - - "<"
         | 
| 31 31 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 32 | 
             
                    version: 3.0.0
         | 
| 33 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 34 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 35 35 | 
             
                requirements:
         | 
| 36 | 
            -
                - -  | 
| 36 | 
            +
                - - ">="
         | 
| 37 37 | 
             
                  - !ruby/object:Gem::Version
         | 
| 38 38 | 
             
                    version: 2.3.0
         | 
| 39 39 | 
             
              name: bindata
         | 
| @@ -41,13 +41,13 @@ dependencies: | |
| 41 41 | 
             
              type: :runtime
         | 
| 42 42 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 43 | 
             
                requirements:
         | 
| 44 | 
            -
                - -  | 
| 44 | 
            +
                - - ">="
         | 
| 45 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 46 | 
             
                    version: 2.3.0
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 49 | 
             
                requirements:
         | 
| 50 | 
            -
                - -  | 
| 50 | 
            +
                - - ">="
         | 
| 51 51 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 52 | 
             
                    version: 1.1.0
         | 
| 53 53 | 
             
              name: lru_redux
         | 
| @@ -55,13 +55,13 @@ dependencies: | |
| 55 55 | 
             
              type: :runtime
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 57 | 
             
                requirements:
         | 
| 58 | 
            -
                - -  | 
| 58 | 
            +
                - - ">="
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 60 | 
             
                    version: 1.1.0
         | 
| 61 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 62 62 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 63 63 | 
             
                requirements:
         | 
| 64 | 
            -
                - -  | 
| 64 | 
            +
                - - ">="
         | 
| 65 65 | 
             
                  - !ruby/object:Gem::Version
         | 
| 66 66 | 
             
                    version: 1.2.0
         | 
| 67 67 | 
             
              name: snmp
         | 
| @@ -69,13 +69,13 @@ dependencies: | |
| 69 69 | 
             
              type: :runtime
         | 
| 70 70 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 71 | 
             
                requirements:
         | 
| 72 | 
            -
                - -  | 
| 72 | 
            +
                - - ">="
         | 
| 73 73 | 
             
                  - !ruby/object:Gem::Version
         | 
| 74 74 | 
             
                    version: 1.2.0
         | 
| 75 75 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 76 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 77 77 | 
             
                requirements:
         | 
| 78 | 
            -
                - -  | 
| 78 | 
            +
                - - ">="
         | 
| 79 79 | 
             
                  - !ruby/object:Gem::Version
         | 
| 80 80 | 
             
                    version: '0'
         | 
| 81 81 | 
             
              name: logstash-devutils
         | 
| @@ -83,7 +83,7 @@ dependencies: | |
| 83 83 | 
             
              type: :development
         | 
| 84 84 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 85 85 | 
             
                requirements:
         | 
| 86 | 
            -
                - -  | 
| 86 | 
            +
                - - ">="
         | 
| 87 87 | 
             
                  - !ruby/object:Gem::Version
         | 
| 88 88 | 
             
                    version: '0'
         | 
| 89 89 | 
             
            description: This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program
         | 
| @@ -130,17 +130,17 @@ require_paths: | |
| 130 130 | 
             
            - lib
         | 
| 131 131 | 
             
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 132 132 | 
             
              requirements:
         | 
| 133 | 
            -
              - -  | 
| 133 | 
            +
              - - ">="
         | 
| 134 134 | 
             
                - !ruby/object:Gem::Version
         | 
| 135 135 | 
             
                  version: '0'
         | 
| 136 136 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 137 137 | 
             
              requirements:
         | 
| 138 | 
            -
              - -  | 
| 138 | 
            +
              - - ">="
         | 
| 139 139 | 
             
                - !ruby/object:Gem::Version
         | 
| 140 140 | 
             
                  version: '0'
         | 
| 141 141 | 
             
            requirements: []
         | 
| 142 142 | 
             
            rubyforge_project:
         | 
| 143 | 
            -
            rubygems_version: 2.4. | 
| 143 | 
            +
            rubygems_version: 2.4.8
         | 
| 144 144 | 
             
            signing_key:
         | 
| 145 145 | 
             
            specification_version: 4
         | 
| 146 146 | 
             
            summary: The sflow codec is for decoding SFlow v5 flows.
         |