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

一、前言

最近发现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库路径为[code]/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/logstash-filter-geoip-5.0.3-java/vendor/[/code]

二、注册maxmind账户

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

1、注册账户

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

图片[1]|Centos7中Logstash使用最新版GeoIP并自动更新|leon的博客

2、获取LicenseKey

图片[2]|Centos7中Logstash使用最新版GeoIP并自动更新|leon的博客

图片[3]|Centos7中Logstash使用最新版GeoIP并自动更新|leon的博客

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

三、升级程序

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

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

2、编辑配置文件

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

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

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

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

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

5、配置logstash相关配置文件

[root@test ~]# 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

温馨提示:本文最后更新于2022-12-20 20:57:40,已超过491天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/1983.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享