需求
我们都知道nginx日志里面有域名,同时也有用户的远程ip。但是ip其实我们看不出什么东西,我们知道通过ip其实可以查询一些地理位置信息出来的(很多网站都可以直接查的)。这个过程就是GeoIP:就是通过来访者的IP,定位他的经纬度,国家/地区,省市,甚至街道等位置信息。而在logstash里面就有一个解决这个需求的插件:logstash-filter-geoip
数据格式
logstash-filter-geoip 本身不用安装,logstash默认已经安装了,如果您的没有安装,可以直接执行安装命令
/usr/share/logstash/bin/logstash-plugin install logstash-filter-geoip
该插件有如下信息
"geoip" => {
"ip" => "183.60.92.253",
"country_code2" => "CN",
"country_code3" => "CHN",
"country_name" => "China",
"continent_code" => "AS",
"region_name" => "30",
"city_name" => "Guangzhou",
"latitude" => 23.11670000000001,
"longitude" => 113.25,
"timezone" => "Asia/Chongqing",
"real_region_name" => "Guangdong",
"location" => [
[0] 113.25,
[1] 23.11670000000001
]
}
配置
在filter section 配置 插件
geoip {
source => "ip"
}
本地化汉化
大家观察下 geoip 相关信息和下图 就发现有些字段是汉化的。默认的插件是不带汉化功能的,如果非必要大家可以不用在乎,我就是看着非常别扭,有点强迫症。官方不支持就得另辟出路,还真有人解决了:插件汉化。
汉化过程
#卸载原有插件
$ /usr/share/logstash/bin/logstash-plugin uninstall logstash-filter-geoip
#下载汉化插件
$ wget https://raw.githubusercontent.com/wjcxk21/logstash-filter-geoip-cn/master/logstash-filter-geoip-6.0.0-java.gem
#安装汉化插件
$ /usr/share/logstash/bin/logstash-plugin install --no-verify --local /tmp/logstash-filter-geoip-6.0.0-java.gem
安装汉化插件过程有可能会漫长,不要急,不要以为出问题了。安装好重启logstash就好了
题外话
在实施过程中发现 这个插件识别的省份可能会错误需要保持基本库正确,位置在 : /usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-5.0.5-java/vendor
不错
回复 @ apanly: 非常不错