Centos7中Logstash使用最新版GeoIP并自动更新

2020年3月15日20:16:34 发表评论 2,789 views

一、前言

最近发现logstash自带的GeoIP库解析的地址信息越来越不准确,萌生更新GeoIP的想法,于是写下此篇文章进行记录。

由于centos 7系统会安装bind-utils,bind-utils 包含了许多DNS查询的工具包,其中就有一个dependency GeoIP library,导致如果直接使用rpm 的安装包来安装的话,默认的可执行程序会被安装在/usr/bin/geoipupdate, conf 地址会被安装在/etc/GeoIP.conf, 这样会和老版的geoipupdate 发生冲突,但是bind-utils 又依赖于老版的GeoIP 库,不可能卸载掉,于是此处我们使用二进制文件安装的方式进行升级。

PS. logstash6.8.x自带的ip库路径为/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-5.0.3-java/vendor/

二、注册maxmind账户

由于maxmind更新用户规则,若想自动更新ip库需要注册maxmind账户并使用授权密钥才可以自动更新ip库。

1、注册账户

使用gmail邮箱即可注册成功,注册地址:https://www.maxmind.com/en/geolite2/signup

Centos7中Logstash使用最新版GeoIP并自动更新

2、获取LicenseKey

Centos7中Logstash使用最新版GeoIP并自动更新

Centos7中Logstash使用最新版GeoIP并自动更新

之后可以直接下载自动生成GeoIP.conf文件,根据实际情况编写自己的配置文件。

三、升级程序

1、下载并安装最新版IP库自动更新程序

[[email protected] ~]# wget https://github.com/maxmind/geoipupdate/releases/download/v4.2.2/geoipupdate_4.2.2_linux_amd64.tar.gz
[[email protected] ~]# tar xf geoipupdate_4.2.2_linux_amd64.tar.gz
[[email protected] ~]# cd geoipupdate_4.2.2_linux_amd64/
[[email protected] geoipupdate_4.2.2_linux_amd64]# mv GeoIP.conf /usr/local/etc/
[[email protected] geoipupdate_4.2.2_linux_amd64]# mv geoipupdate /usr/local/bin/

2、编辑配置文件

[[email protected] ~]# vim /usr/local/etc/GeoIP.conf
AccountID 你的账户ID
LicenseKey 你的授权密钥
# 需要下载的ip库
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country
# 下载ip库的保存路径
DatabaseDirectory /data/GeoIP

3、创建相关目录及更新授权

[[email protected] ~]# mkdir -p /data/GeoIP
# 执行更新程序
[[email protected] ~]# /usr/local/bin/geoipupdate
# 授权目录及ip库为logstash用户权限,此步骤可省略
[[email protected] ~]# chown -R logstash.logstash /data/GeoIP

4、编写定时任务定时更新程序

[[email protected] ~]# crontab -e
# 此处可以根据实际情况编写更新脚本放在此处执行
17 3 * * 3 /usr/local/bin/geoipupdate > /tmp/geoip.log 2>&1

5、配置logstash相关配置文件

[[email protected] ~]# vim /etc/logstash/conf.d/nginx.conf
filter {
geoip {
source => "[realip]"
target => "geoip"
# 此处设置自定义ip库
database => "/data/GeoIP/GeoLite2-City.mmdb"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float"]
convert => [ "responsetime", "float"]
}
}

四、参考资料

https://dev.maxmind.com/geoip/geoipupdate/

https://www.iamhippo.com/2019-05/803.html

https://www.cnblogs.com/Orgliny/p/5755384.html

https://blog.csdn.net/CrownP/article/details/101346838

weinxin
我的微信
如果有技术上的问题可以扫一扫我的微信
版权声明
1. 本网站名称:Leon的博客
2. 本站永久网址:https://blog.leonshadow.cn
3. 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ632113590进行删除处理。
4. 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6. 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
liyang