Fluent::Plugin::GeoIPFilter
This is a Fluentd filter plugin for adding GeoIP data to record. Supports the new Maxmind v2 database formats.
Installation
Add this line to your application's Gemfile:
gem 'fluent-plugin-output-geoip'
And then execute:
$ bundle
Or install it yourself as:
$ gem install fluent-plugin-output-geoip
Config parameters
download_url
download_url http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
md5_url
md5_url http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.md5
database_path
database_path ./geoip/database/GeoLite2-City.mmdb
md5_path
md5_path ./geoip/database/GeoLite2-City.md5
lookup_field
lookup_field host
field_prefix
field_prefix geoip
field_delimiter
field_delimiter _
flatten
flatten true
continent
continent true
country
country true
city
city true
location
location true
postal
postal true
registered_country
registered_country true
represented_country
represented_country true
subdivisions
subdivisions true
traits
traits true
connection_type
connection_type true
Plugin setup examples
<filter tail.log>
@type geoip
download_url http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
md5_url http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.md5
database_path ./geoip/database/GeoLite2-City.mmdb
md5_path ./geoip/database/GeoLite2-City.md5
lookup_field host
field_prefix geoip
field_delimiter _
flatten true
continent true
country true
city true
location true
postal true
registered_country true
represented_country true
subdivisions true
traits true
connection_type true
</filter>
Assuming following inputs are coming:
{
"host":"212.99.123.25",
"user":"-",
"method":"GET",
"path":"/item/sports/4981",
"code":"200",
"size":"94",
"referer":"/category/electronics",
"agent":"Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1"
}
then output bocomes as belows:
{
"host":"212.99.123.25",
"user":"-",
"method":"GET",
"path":"/item/sports/4981",
"code":"200",
"size":"94",
"referer":"/category/electronics",
"agent":"Mozilla/5.0 (Windows NT 6.0; rv:10.0.1) Gecko/20100101 Firefox/10.0.1",
"geoip_continent_code":"EU",
"geoip_continent_geoname_id":6255148,
"geoip_continent_names_de":"Europa",
"geoip_continent_names_en":"Europe",
"geoip_continent_names_es":"Europa",
"geoip_continent_names_fr":"Europe",
"geoip_continent_names_ja":"ヨーロッパ",
"geoip_continent_names_pt-BR":"Europa",
"geoip_continent_names_ru":"Европа",
"geoip_continent_names_zh-CN":"欧洲",
"geoip_country_geoname_id":3017382,
"geoip_country_iso_code":"FR",
"geoip_country_names_de":"Frankreich",
"geoip_country_names_en":"France",
"geoip_country_names_es":"Francia",
"geoip_country_names_fr":"France",
"geoip_country_names_ja":"フランス共和国",
"geoip_country_names_pt-BR":"França",
"geoip_country_names_ru":"Франция",
"geoip_country_names_zh-CN":"法国",
"geoip_city_geoname_id":3038354,
"geoip_city_names_de":"Aix-en-Provence",
"geoip_city_names_en":"Aix-en-Provence",
"geoip_city_names_es":"Aix-en-Provence",
"geoip_city_names_fr":"Aix-en-Provence",
"geoip_city_names_ja":"エクス=アン=プロヴァンス",
"geoip_city_names_pt-BR":"Aix-en-Provence",
"geoip_city_names_ru":"Экс-ан-Прованс",
"geoip_city_names_zh-CN":"普罗旺斯地区艾克斯",
"geoip_location_latitude":43.5283,
"geoip_location_longitude":5.4497,
"geoip_location_time_zone":"Europe/Paris",
"geoip_postal_code":"13090",
"geoip_registered_country_geoname_id":3017382,
"geoip_registered_country_iso_code":"FR",
"geoip_registered_country_names_de":"Frankreich",
"geoip_registered_country_names_en":"France",
"geoip_registered_country_names_es":"Francia",
"geoip_registered_country_names_fr":"France",
"geoip_registered_country_names_ja":"フランス共和国",
"geoip_registered_country_names_pt-BR":"França",
"geoip_registered_country_names_ru":"Франция",
"geoip_registered_country_names_zh-CN":"法国",
"geoip_subdivisions_0_geoname_id":2985244,
"geoip_subdivisions_0_iso_code":"U",
"geoip_subdivisions_0_names_de":"Provence-Alpes-Côte d’Azur",
"geoip_subdivisions_0_names_en":"Provence-Alpes-Côte d'Azur",
"geoip_subdivisions_0_names_es":"Provenza-Alpes-Costa Azul",
"geoip_subdivisions_0_names_fr":"Provence-Alpes-Côte d'Azur",
"geoip_subdivisions_0_names_ja":"プロヴァンス=アルプ=コート・ダジュール地域圏",
"geoip_subdivisions_0_names_pt-BR":"Provença-Alpes-Costa Azul",
"geoip_subdivisions_0_names_ru":"Прованс — Альпы — Лазурный Берег",
"geoip_subdivisions_0_names_zh-CN":"普罗旺斯-阿尔卑斯-蓝色海岸",
"geoip_subdivisions_1_geoname_id":3031359,
"geoip_subdivisions_1_iso_code":"13",
"geoip_subdivisions_1_names_de":"Bouches-du-Rhône",
"geoip_subdivisions_1_names_en":"Bouches-du-Rhône",
"geoip_subdivisions_1_names_es":"Bocas del Ródano",
"geoip_subdivisions_1_names_fr":"Bouches-du-Rhône",
"geoip_subdivisions_1_names_pt-BR":"Bocas do Ródano",
"geoip_localtion_latlon":"43.5283,5.4497"
}
Development
After checking out the repo, run bundle install to install dependencies. Then, run rake test to run the tests.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/mosuka/fluent-plugin-filter-geoip.