2026年9月1日
2026年9月1日
Nginxのweb_accessログをGoAccessで分析する方法
はじめに
ウェブサイトのアクセスログは、サイトのパフォーマンスを把握し、ユーザー行動やセキュリティ状況を理解するための重要な情報源です。Nginxのような高性能なWebサーバーを使用している場合でも、これらの情報を適切に分析することは容易ではありません。GoAccessは、Linux環境においてWebアクセスログをリアルタイムで可視化・解析するツールであり、豊富な機能を持つことで知られています。
この記事では、GoAccessのインストールから設定までの一連の手順を紹介し、Nginxのweb_accessログ分析に役立つ具体的な操作方法について解説します。また、GoAccessを活用して得られる情報の活用法や注意点も含めて詳しく説明します。
症状・背景
このテーマが必要になる主な場面:
- Webサイトのアクセス解析が必要になった場合
- ウェブサーバーのパフォーマンス改善を目指している場合
- ブラウザやOS別のアクセス傾向を把握したい場合
- アクセスログから不審なアクセスパターンを見つけたい場合
手順・設定方法
ステップ1: GoAccessのインストールと基本設定
# まず、GoAccessの公式サイトから最新版のソースコードをダウンロードします。
wget https://tar.goaccess.io/goaccess-1.5.tar.gz
# ダウンロードしたファイルを展開します。
tar -xvzf goaccess-1.5.tar.gz
# 解凍したディレクトリに移動します。
cd goaccess-1.5/
# GoAccessのインストールに必要な依存関係をインストールします。
sudo apt-get install libncursesw5-dev libgeoip-dev libgmp3-dev
# 次に、GoAccessをコンパイルしてインストールします。
./configure --enable-geoip=city
make
sudo make install
ステップ2: GoAccessの設定ファイルを作成・編集
# Nginxのアクセスログフォーマットに対応するため、設定ファイルを生成します。
goaccess -h 2>/dev/null | grep 'log format'
echo "date_format %d/%b/%Y:%H:%M:%S" > ~/.goaccessrc
echo "logformat COMBINEDLOG" >> ~/.goaccessrc
# サイトのアクセスログファイルを指定します。
echo "logfile /var/log/nginx/access.log" >> ~/.goaccessrc
# GeoIPデータベースパスを設定します。
sudo apt-get install geoip-database libgeoip-dev
sudo dpkg-reconfigure geoip-database
sudo apt-get update && sudo apt-get -y install geoip-bin
echo 'db /usr/share/GeoIP/GeoIPCity.dat' >> ~/.goaccessrc
# カスタム出力を設定します。
echo "output json" >> ~/.goaccessrc
ステップ3: GoAccessを実行してログを分析する
# GoAccessの実行時に指定したアクセスログファイルを読み込みます。
sudo goaccess /var/log/nginx/access.log -a --time-format %H:%M:%S --date-format %d/%b/%Y --log-format='%h %^[%d:%t] "%r" %s %b "%R" "%u"' --output ./output.json
# インタラクティブモードでGoAccessを起動します。
goaccess /var/log/nginx/access.log -a
ステップ4: GoAccessの実践的な活用法とトラブルシュート
# セッション間でのデータ保存を有効にします。
echo "session-timeout 60" >> ~/.goaccessrc
# ログファイルのフィルタリングを行う際は、次のコマンドを利用できます。
sudo goaccess /var/log/nginx/access.log -d 1 --log-format='%h %^[%d:%t] "%r" %s %b "%R" "%u"' | grep 'GET'
注意事項
- GoAccessの設定ファイルが不適切な場合、アクセスログの解析結果に誤りが生じる可能性がある。
- セッション間でのデータ保存を有効にする際は、ユーザー環境に応じて適切なタイムアウト時間を指定すること。
- ジオロケーション情報を取得するためにはGeoIPデータベースが必要であり、それを定期的に更新することが推奨される。
- ログファイルの大量解析を行う場合やリアルタイムモニタリング用途では、サーバーリソースが過度に消費されることもあるため注意が必要。
まとめ
1. GoAccessのインストール: GoAccessをインストールする際は、公式サイトから最新版のソースコードを入手し、必要に応じて依存関係もインストールします。
2. 設定ファイルの作成: Nginxのアクセスログフォーマットに対応させるための設定を行い、GeoIPデータベースへのパスや出力形式等も指定します。
3. ログ解析とインタラクティブモード: GoAccessを起動してリアルタイムでアクセス情報を可視化し、必要に応じてセッション間でのデータ保存を行います。
4. フィルタリング機能の活用: ログファイルから特定の情報のみを取り出すために、GoAccessには便利なフィルタリングオプションが用意されています。
関連記事: