Logstash模块之geoip

Logstash模块之geoip

在对Logstash的实际应用中,为了从日志中ip获取到用户访问时的所在地,用到了geoip这个模块。刚开始使用时并未注意到一些细节,但在做数据分析的时候发现了geoip的坑

配置

关于geoip的配置这里就不阐述了,有兴趣的可以看看 logstash配置文件详解 或者查阅Logstash的官方文档

分析

如果配置正确,那么在logstash分析日志并输出的时候,通过geoip能获取到很多的信息,包括经纬度,国家,城市,地区等信息,需要注意的是这些信息并不是用户当前访问的实际地址,而是IP所在地(包括经纬度也只是当前城市)。例如,用户在北京故宫访问了你的站点,根据日志中的IP查询出来的结果只会显示北京。

那么问题来了,这是为什么呢?

在logstash中找到geoip相关的文件夹找到了答案,路径是/logstash-5.2.0/vendor/bundle/jruby/1.9/gems/logstash-filter-geoip-4.0.4-java/vendor/,在这个文件夹下有一个名为GeoLite2-City.mmdb的文件,这个就是geoip使用的数据源了。

经过一番周折,发现这个数据源是由Maxmind这家公司提供的,下载了最新的数据包看看是怎么回事。解压文件如下

Logstash模块之geoip

Logstash模块之geoip

Logstash模块之geoip

相信大家已经明白geoip的结果是怎么来的了吧,下面来扒一扒这个数据源。

并未包含所有的地区数据

这其实是很正常的,但是并未包含所有的市及以上的数据就不好了。解析之后可能会出现没有城市名称,或者城市名称和省名称相同的结果。

数据错误

geoip解析的结果并不完全是拼音,例如哈尔滨,geoip的结果是harbin。
最严重的是,这个数据源直接把HK独立了出去,这简直就是想放弃中国市场的行为啊。

手机IP无法解析

如果用户使用的是手机进行访问的,日志中的IP也是无法找到到用户所在地区的。

Logstash模块之geoip

在对Logstash的实际应用中,为了从日志中ip获取到用户访问时的所在地,用到了geoip这个模块。刚开始使用时并未注意到一些细节,但在做数据分析的时候发现了geoip的坑

配置

关于geoip的配置这里就不阐述了,有兴趣的可以看看 logstash配置文件详解 或者查阅Logstash的官方文档

分析

如果配置正确,那么在logstash分析日志并输出的时候,通过geoip能获取到很多的信息,包括经纬度,国家,城市,地区等信息,需要注意的是这些信息并不是用户当前访问的实际地址,而是IP所在地(包括经纬度也只是当前城市)。例如,用户在北京故宫访问了你的站点,根据日志中的IP查询出来的结果只会显示北京。

那么问题来了,这是为什么呢?

在logstash中找到geoip相关的文件夹找到了答案,路径是/logstash-5.2.0/vendor/bundle/jruby/1.9/gems/logstash-filter-geoip-4.0.4-java/vendor/,在这个文件夹下有一个名为GeoLite2-City.mmdb的文件,这个就是geoip使用的数据源了。

经过一番周折,发现这个数据源是由Maxmind这家公司提供的,下载了最新的数据包看看是怎么回事。解压文件如下

Logstash模块之geoip

Logstash模块之geoip

Logstash模块之geoip

相信大家已经明白geoip的结果是怎么来的了吧,下面来扒一扒这个数据源。

并未包含所有的地区数据

这其实是很正常的,但是并未包含所有的市及以上的数据就不好了。解析之后可能会出现没有城市名称,或者城市名称和省名称相同的结果。

数据错误

geoip解析的结果并不完全是拼音,例如哈尔滨,geoip的结果是harbin。
最严重的是,这个数据源直接把HK独立了出去,这简直就是想放弃中国市场的行为啊。

手机IP无法解析

如果用户使用的是手机进行访问的,日志中的IP也是无法找到到用户所在地区的。