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 の標準リポジトリにも収録されているが、収録されているバージョンは公式リポジトリのものより古いことがある。ここでは公式リポジトリを使う手順を示す。

  1. 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
    
  2. 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)は事前に存在し、コマンド実行ユーザに書き込み権限が必要である。

  3. レポートを日本語で表示する場合

    goaccess のレポートの表示言語は、実行時のロケール(LANG 環境変数)で決まる。日本語ロケールのパッケージをインストールし、LANGja_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
    
  4. 生成された HTML ファイルを Web ブラウザで開いて確認する。

    Web サーバの公開ディレクトリに出力した場合は、http://<サーバのアドレス>/report.html で表示できる。公開ディレクトリに置いたレポートは誰でも閲覧できる状態になるため、Basic 認証やアクセス元 IP アドレスによる制限を設定する。