Sha256: 9fb22c472c1215df249f138f4601d13cc08ae63571c2f9d4b9f1fbab4fef153e

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require 'fluent/plugin/geoip'

module Fluent
  class GeoipFilter < Filter
    Plugin.register_filter('geoip', self)

    config_param :geoip_database, :string, :default => File.dirname(__FILE__) + '/../../../data/GeoLiteCity.dat'
    config_param :geoip2_database, :string, :default => File.dirname(__FILE__) + '/../../../data/GeoLite2-City.mmdb'
    config_param :geoip_lookup_key, :string, :default => 'host'
    config_param :skip_adding_null_record, :bool, :default => false

    include Fluent::SetTagKeyMixin
    config_set_default :include_tag_key, false

    config_param :hostname_command, :string, :default => 'hostname'

    config_param :log_level, :string, :default => 'warn'

    config_param :backend_library, :enum, :list => Fluent::GeoIP::BACKEND_LIBRARIES, :default => :geoip

    def configure(conf)
      super
      @geoip = Fluent::GeoIP.new(self, conf)
    end

    def filter_stream(tag, es)
      new_es = MultiEventStream.new
      es.each do |time, record|
        begin
          filter_record(tag, time, record)
          filtered_record = @geoip.add_geoip_field(record)
          new_es.add(time, filtered_record) if filtered_record
        rescue => e
          router.emit_error_event(tag, time, record, e)
        end
      end
      new_es
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fluent-plugin-geoip-0.8.2 lib/fluent/plugin/filter_geoip.rb