module Fluent::Geoip

Public Instance Methods

city_of_ip(ip) click to toggle source
# File lib/fluent/plugin/geoip.rb, line 10
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
country_code_of_ip(ip) click to toggle source
# File lib/fluent/plugin/geoip.rb, line 5
def country_code_of_ip(ip)
  iso_code = global_geoip.lookup(ip).country.iso_code
  iso_code && iso_code.downcase
end
geoip_db_path() click to toggle source
# File lib/fluent/plugin/geoip.rb, line 30
def geoip_db_path
  '/etc/GeoIP2-City.mmdb'
end
global_geoip() click to toggle source
# File lib/fluent/plugin/geoip.rb, line 22
def global_geoip
  if Time.now.strftime('%M:%S') == '01:00'
    @@global_geoip = ::MaxMindDB.new(geoip_db_path)
  else
    @@global_geoip ||= ::MaxMindDB.new(geoip_db_path)
  end
end