Module: Fluent::Geoip

Included in:
VikiInput
Defined in:
lib/fluent/plugin/geoip.rb

Instance Method Summary collapse

Instance Method Details

#city_of_ip(ip) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# 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) ⇒ Object



5
6
7
8
# 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_pathObject



30
31
32
# File 'lib/fluent/plugin/geoip.rb', line 30

def geoip_db_path
  '/etc/GeoIP2-City.mmdb'
end

#global_geoipObject



22
23
24
25
26
27
28
# 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