Created
September 22, 2014 11:46
-
-
Save playerjamesbattleground/dfa7a58dc8e7f599320f to your computer and use it in GitHub Desktop.
Try to make a custom geokit logstash filter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 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 | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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