require 'maxminddb' module Fluent module Geoip def country_code_of_ip(ip) iso_code = global_geoip.lookup(ip).country.iso_code iso_code && iso_code.downcase end def city_of_ip(ip) city = global_geoip.lookup(ip) record = {} record['dma_code'] = city.location.metro_code record['city_name'] = city.city && city.city.name record['latitude'] = city.location.latitude.to_s record['longitude'] = city.location.longitude.to_s record['postal_code'] = city.postal.code record['region_name'] = city.subdivisions.first && city.subdivisions.first.iso_code record end def global_geoip @@global_geoip ||= ::MaxMindDB.new(geoip_db_path) end def geoip_db_path '/etc/GeoIP2-City.mmdb' end end end