Skip to content

Instantly share code, notes, and snippets.

@playerjamesbattleground
Created September 22, 2014 11:46
Show Gist options
  • Select an option

  • Save playerjamesbattleground/dfa7a58dc8e7f599320f to your computer and use it in GitHub Desktop.

Select an option

Save playerjamesbattleground/dfa7a58dc8e7f599320f to your computer and use it in GitHub Desktop.
Try to make a custom geokit logstash filter
# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "logstash/util/geolookup"
class LogStash::Filters::Geocoder < LogStash::Filters::Base
# Setting the config_name here is required. This is how you
# configure this filter from your logstash config.
#
# filter {
# foo { ... }
# }
config_name "geocoder"
# New plugins should start life at milestone 1.
milestone 1
# Replace the message with this value.
config :source, :validate => :string
public
def register
@gl = Geolookup.new
end # def register
public
def filter(event)
# return nothing unless there's an actual filter event
return unless filter?(event)
begin
if @message
result = @gl.reverse_geocoder(@message)
# event["lat"] = result.lat
# event["lng"] = result.lng
event["latlng"] = reuslt.ll
event["full_address"] = result.full_address
end
rescue => e
event.tag("_geocodeparsefailure")
@logger.warn("Trouble parsing geocode", :source => @source,
:raw => event[@source], :exception => e)
end
# filter_matched should go in the last line of our successful code
filter_matched(event)
end # def filter
end # class LogStash::Filters::Foo
class Geolookup
require "geocoder"
require "cache_method"
def reverse_geocoder query
Geokit::Geocoders::secure = false # disable ssl for poc
Geokit::Geocoders::MultiGeocoder.geocode(query)
end
cache_method :reverse_geocoder
end # class Glookup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment