阿毛
It's me !
想你所想

Matomo配置GeoIP2之自动更新

Matomo支持免费的第三方IP库,如DBIP、GeoIP、GeoIP2等,起初给Matomo配置DBIP,发现定位并不准确,尽管官方每月更新一次。。所以现在考虑换成传说免费IP库中更准确的GeoIP2。

GeoIP和GeoIP2都是MaxMind的产品,GeoIP2是GeoIP的升级,GeoIP已不再维护。

下文内容大部分内容均参考自: https://dev.maxmind.com/geoip/geoipupdate
下文指引内容为GeoIP2的2020-4-15最新版方式,如后续变更,请从上述官方文档中获取最新内容(变动应该不会太大。。)
Matomo版本为:3.13.3
下文主要阐述,如何让Matomo站点使用GeoIP2进行地理位置数据分析,并保持GeoIP2库的定时自动更新。


一、下载geoipupdate更新程序包

geoipupdate是官方提供的GeoIP2库更新包,其中包含了运行更新的脚本以及配置文件等。

从github上下载最新的更新包,仓库地址: https://github.com/maxmind/geoipupdate 。下载最新的release版本,选择适合自己的包,我这里使用的64位的CentOS,所以选择下载这个,64位解压缩版,如下图所示:

https://file.blog.humh.cn/2020/04/图片-8.png

下载完后解压缩到你所指定的目录后,展开内容大致如下:

https://file.blog.humh.cn/2020/04/图片-9.png
release解压缩后的目录结构

其中绿色的 geoipupdate 就是可执行的更新脚本,GeoIP.conf 就是脚本读取的配置文件。

二、配置GeoIP.conf

GeoIP.conf 是更新脚本执行时读取的配置文件,其中包含了账户、许可证秘钥以及需要更新下载的库。

https://file.blog.humh.cn/2020/04/图片-24.png
GeoIP.conf

Account 是你MaxMind的账号,LicenseKey 是账号下对应的用于更新IP库的许可证密钥。好像这两个参数是可以默认的,但这里我使用自己的账号参数,安全一些。如果还有没有账号,直接去MaxMind( https://www.maxmind.com/ )上注册一个即可。然后点击这里

https://file.blog.humh.cn/2020/04/图片-12.png

你可以看到配置的模板文件,其中Account的值就是你真实的账户id。

https://file.blog.humh.cn/2020/04/图片-11.png
模板配置文件

然后申请你的许可证密钥,

https://file.blog.humh.cn/2020/04/图片-13.png

点击后会进入类似如下页面

https://file.blog.humh.cn/2020/04/图片-14.png

这里意思是你将要申请专门用来更新GeoIP库的密钥,选择“Yes”。然后弹出下面页面

https://file.blog.humh.cn/2020/04/图片-15.png

如果你下载的是最新release更新包,那么应该是大于3.1.1的版本,具体根据下载的版本选择,高于的选择上面即可,反之亦然,“confirm”确认,应该你会看到你的密钥了,这个密钥就是GeoIP.confLicenseKey 的值了。

EditionIDs 是你需要更新的产品库,如下三种,ASN应该是自动系统编号,City就是城市级别库,Country国家级别库,根据自己的需求,选择自己需要的即可,这里我就选择三个都更新。实际使用中我想IP定位到城市,可能就只需要配置City即可。

https://file.blog.humh.cn/2020/04/图片-16.png

三、执行更新脚本

注意,首先你需要明确自己的系统是否已经预装包含了geoipupdate或者geoip相关的东西。如果你的系统中预装了相关的东西,可能当你执行更新脚本时,事与愿违,并不是理想的结果或者会有报错。如 21错误代码(Received Error -21 (Sanity check database_info string failed) when attempting to update GeoIP Database )等。

举个例子:我CentOS中安装配置了Nginx,Nginx中又预装了GeoIP的模块,所以在系统中会默认存在GeoIP的东西,如GeoIP库以及更新脚本等,如下都是Nginx预装的

https://file.blog.humh.cn/2020/04/图片-17.png
/usr/bin中预装geoip脚本

预装在 /usr/share 中的GeoIP目录

https://file.blog.humh.cn/2020/04/图片-18.png
/etc 中预装的配置文件

这些都不是我们真正想要执行的内容(可以通过which geoipupdatelocate geoipupdate验证是否存在预装的更新包),我们想要执行的内容都在解压缩release更新包后目录中的内容。但系统变量中bin已经包含了 geoipupdate 的脚本,如果你直接执行 geoipupdate 的话,执行的是预装的,这里我们可以通过自定义脚本名来解决,假如你真正执行的 geoipupdate 在 “/usr/share/geoipupdate” 目录中(这也是我release包解压缩后的路径),那么可以在 “/usr/bin” 中新建一个 软链接,链接指向你真正执行的 geoipupdate 。在“/usr/bin”下键入
ln -s /usr/share/geoipupdate/geoipupdate geoipupdate-new 这里我自定义了一个 geoipupdate-new 的脚本命令,也就是我们真正更新脚本的命令(默认可执行权限)。

这里我新建一个目录“GeoIP-new”,用于存放下载更新下来的IP库(.mmdb文件)。
geoipupdate 支持通过“-f”参数指定加载的配置文件和“-d”指定IP仓库目录。本样例,我最终的shell运行命令如下geoipupdate-new -f /usr/share/geoipupdate/GeoIP.conf -d /usr/share/GeoIP-new/,运行就会开始进行GeoIP2的更新,最终你会在 GeoIP-new 中看到下载更新的IP库文件。

https://file.blog.humh.cn/2020/04/图片-19.png

可以在 geoipupdate 后追加 “-v” 参数,输出命令运行时的详细信息。

四、定时更新IP库

到第三步完,我们的更新已经成功了。但每次手动更新毕竟麻烦,所以需要完成定时自动更新的功能,这里可以通过Linux cron的cron.d(当然也可以crontab -e的方式,具体可参考https://blog.humh.cn/?p=260中的Linux cron)方式完成。
在 cron.d 新建一个 geoip-update 文件,内容模板为

MAILTO="youremail@example.com"
# 每周五00:00自动更新GeoIP2库
0 0 * * 5 user geoipupdate-new -f /usr/share/geoipupdate/GeoIP.conf -d /usr/share/GeoIP-new/ -v

替换自己的邮箱地址,user 替换为 geoipupdate-new 的可执行用户,属主用户即可,有可执行权限。
最终下次定时任务执行时,会自动更新。

五、将GeoIP配置至Matomo

将IP库中下载更新下来的 .mmdb 文件 copy 至 matomo 安装路径下的“misc”目录下即可。为了方便管理,不浪费额外的磁盘空间,直接在“misc”下建立对IP库(该样例“/usr/share/GeoIP-new”)中 .mmdb 文件的软链接即可(软链接默认777,软链接所指向IP库文件保证Matomo所属用户有可读权限即可)。最终“misc”目录下内容:

https://file.blog.humh.cn/2020/04/图片-20.png

至此,所有Matomo集成GeoIP库的配置完成,进入你的Matomo后台,你会看到对应项的结果如下,表示成功了:

https://file.blog.humh.cn/2020/04/图片-22-1024x253.png

humh

文章作者

站长本人,一个憨批!

发表评论

textsms
account_circle
email

想你所想

Matomo配置GeoIP2之自动更新
Matomo支持免费的第三方IP库,如DBIP、GeoIP、GeoIP2等,起初给Matomo配置DBIP,发现定位并不准确,尽管官方每月更新一次。。所以现在考虑换成传说免费IP库中更准确的GeoIP2。 GeoIP和…
扫描二维码继续阅读
2020-04-15