端くれプログラマの備忘録 Webサイト運営 [Webサイト運営] GoAccessでアクセス国を表示するためにGeoLite2をインストールする

[Webサイト運営] GoAccessでアクセス国を表示するためにGeoLite2をインストールする

昨日の記事に書いたGoAccessでは、アクセス元の国名を併せて表示することができる。そのためにはGeoIPデータベースをインストールしなければならないのだが、幸いなことに無料で提供されているGeoIPデータベースがある。今回はそのインストール手順を覚え書き。

GoAccessの設定ファイル

GoAccessの設定ファイルを見ると以下のように書かれている。

# vi /etc/goaccess/goaccess.conf

######################################
# GeoIP Options
# Only if configured with --enable-geoip
######################################

# To feed a database either through GeoIP Legacy or GeoIP2, you need to use the
# geoip-database flag below.
#
# === GeoIP Legacy
# Legacy GeoIP has been discontinued. If your GNU+Linux distribution does not ship
# with the legacy databases, you may still be able to find them through
# different sources. Make sure to download the .dat files.
#
# Distributed with Creative Commons Attribution-ShareAlike 4.0 International License.
# https://mailfud.org/geoip-legacy/

# IPv4 Country database:
# Download the GeoIP.dat.gz
# gunzip GeoIP.dat.gz
#
# IPv4 City database:
# Download the GeoIPCity.dat.gz
# gunzip GeoIPCity.dat.gz

# Standard GeoIP database for less memory usage (GeoIP Legacy).
#
#std-geoip false

# === GeoIP2
# For GeoIP2 databases, you can use DB-IP Lite databases.
# DB-IP is licensed under a Creative Commons Attribution 4.0 International License.
# https://db-ip.com/db/lite.php

# Or you can download them from MaxMind
# https://dev.maxmind.com/geoip/geoip2/geolite2/

# For GeoIP2 City database:
# Download the GeoLite2-City.mmdb.gz
# gunzip GeoLite2-City.mmdb.gz
#
# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
#
#geoip-database /usr/local/share/GeoIP/GeoLiteCity.dat

geoip-databaseにGeoIP LegacyまたはGeoIP2のデータベースを指定しろということらしい。ただし、GeoIP Legacyは既に配布終了となっている模様。ということは、選択肢はGepIP2だけ、ということか。

GeoIP2の無料データベースを取得する

設定ファイルに記載されているリンクにアクセス。

GeoLite2 Free Geolocation Data
https://dev.maxmind.com/geoip/geoip2/geolite2/

無料版はGeoLite2という名称らしい。ダウンロードには無料のGeoLite2アカウントが必要とのこと。

GeoLite2 Sign Up | MaxMind
https://www.maxmind.com/en/geolite2/signup

必要事項を記入するとメールが来るので、メール本文のリンクをクリックしてログインし、パスワードを設定したらアカウント作成は完了。

サイドメニューからGeoIP2/GeoLite2 -Download Filesページに移動すると、データベースがダウンロードできる。今回はアクセス元IPの国情報が欲しいので、GeoLite2 Country (tar.gz形式) をダウンロードする。

GoAccess用のセットアップ

ダウンロードしたアーカイブを解凍して、.mmdbファイルを適当なディレクトリに配置する。

# cd /usr/local/share
# mkdir GeoIP
# cd GeoIP
# cp <解凍先ディレクトリ> GeoLite2-Country.mmdb

あとはGoAccessの設定ファイルでGeoIPデータベースのパスを指定するだけ。

# vi /etc/goaccess/goaccess.conf
# 以下を追加
geoip-database /usr/local/share/GeoIP/GeoLite2-Country.mmdb

GoAccessを実行して解析ページを生成してみる。[VISITOR HOSTNAME AND IPS]セクションに[COUNTRY]カラムが表示されるようになった。

参考サイト

Industry leading IP Geolocation and Online Fraud Prevention | MaxMind
https://www.maxmind.com/en/home

GoAccess – Visual Web Log Analyzer
https://goaccess.io/