goaccess を用いて Apache のログを1 コマンドで HTML ファイル化する(Ubuntu 上)
Ubuntu で goaccess を使用し、Apache のアクセスログを HTML レポートとして生成する。公式リポジトリから apt でインストールし、GPG キーは /usr/share/keyrings に保存する方法で追加する。goaccess /var/log/apache2/access.log -o report.html --log-format=COMBINED のようなコマンドを実行する。レポートの表示言語は LANG 環境変数(ロケール)で決まる。
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行う際は、次のコマンドを実行する。
# パッケージリストの情報を更新する
sudo apt update
# インストール済みのパッケージを包括的に更新する (依存関係も考慮する)
sudo apt full-upgrade
# 変更をシステム全体に反映させるためにシステムを再起動する
sudo shutdown -r now
goaccess のインストールと運用
Apache のアクセスログは /var/log/apache2/access.log に保存される。このパスを goaccess コマンドで直接指定して解析する。
goaccess は Ubuntu の標準リポジトリにも収録されているが、収録されているバージョンは公式リポジトリのものより古いことがある。ここでは公式リポジトリを使う手順を示す。
- goaccess のインストール
# goaccess公式リポジトリのGPGキーをダウンロードし、バイナリ形式に変換して /usr/share/keyrings/goaccess.gpg に保存する wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg > /dev/null # goaccess公式リポジトリ情報を /etc/apt/sources.list.d/goaccess.list に追加する # signed-by で上のキーファイルを指定する # lsb_release -cs はUbuntuのコードネームを出力する (例: 24.04 LTS は noble、26.04 LTS は resolute) # dpkg --print-architecture は CPU アーキテクチャを出力する (例: amd64) echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list # パッケージリストを更新する sudo apt update # goaccessをインストールする sudo apt -y install goaccess - Apache のログファイルから HTML ファイルの作成
ログファイルから HTML レポートを生成するには、次のコマンドを実行する。
-oで指定したファイルの拡張子が.htmlのとき、HTML 形式で出力される。--log-format=COMBINEDは Apache の標準の Combined Log Format を指定するものである。sudo goaccess /var/log/apache2/access.log -o /var/www/html/report.html --log-format=COMBINED/var/log/apache2/access.logの所有者はroot:adm、パーミッションは640であるため、読み取りにはsudoを使うか、実行ユーザをadmグループに追加する。出力先のディレクトリ(例:
/var/www/html)は事前に存在し、コマンド実行ユーザに書き込み権限が必要である。 - レポートを日本語で表示する場合
goaccessのレポートの表示言語は、実行時のロケール(LANG環境変数)で決まる。日本語ロケールのパッケージをインストールし、LANGにja_JP.UTF-8を指定して実行する。sudoは環境変数を引き継がないため、sudo envを使って指定する。# 日本語ロケールをインストールする sudo apt -y install language-pack-ja # 日本語ロケールを指定してレポートを生成する # LC_TIME=en_US.UTF-8 は、ログ内の英語表記の日付 (例: 12/Jan/2026) を解析するために指定する sudo env LANG=ja_JP.UTF-8 LC_TIME=en_US.UTF-8 goaccess /var/log/apache2/access.log -o /var/www/html/report.html --log-format=COMBINED - 生成された HTML ファイルを Web ブラウザで開いて確認する。
Web サーバの公開ディレクトリに出力した場合は、
http://<サーバのアドレス>/report.htmlで表示できる。公開ディレクトリに置いたレポートは誰でも閲覧できる状態になるため、Basic 認証やアクセス元 IP アドレスによる制限を設定する。