GoAccessを使ってWebサイトのアクセスログを解析する
published: , updated: 2020-07-17

アクセス解析といえばGoogle アナリティクスやYandexのMetarica、オープンソーズではOpenWebAnalyticsやMatomoになったPiwik。トラッキングに特化したサービスなどは多数あり、これらのアクセス解析は発行されたタグを各ページに埋め込むビーコン型のアクセス解析です。
このサイトでは記事ページにはJavascriptを使わないようにしているため、所謂ビーコン型の設置はできません。まさかパケットのアクセス解析などできるはずもなく、サーバのログで対応するのみです。
ログといえば所謂アクセス解析とは違ってLogseenを使ってアクセスしてくるbotや404を確認してました。
- macOS アプリ
- WIndows
- 今でも使えるのかわかりませんが ApacheLogViewer
RやJupyterを使ってグラフ化したりもしてみましたが、ログなのでGoogle Analyticsのような解析はできないわけです。それでも何もないのは何も生み出さないのでGoAccessを使ってサーバのアクセスログを解析します。解析なのか?
GoAccess
- GoAccess - Visual Web Log Analyzer https://goaccess.io/
1. インストール
GoAccessのダウンロードページからインストール方法を確認します。
- GoAccess - Downloads https://goaccess.io/download
macOSのCatalinaに brew install goaccess
でインストールしましたが、ログの解析が失敗します。[c] キーでログフォーマットを変更してみるのですがダメなので違う環境で試してみます。
2. ターミナル出力
Ubuntu18にインストールし起動します。
goaccess ログファイル名パス / ログファイル.log
開きたいログを goaccess
の後に続いて指定します。ログ形式の指定をして起動することもできます。詳細はGoAccessの「Get Started」ページをご確認ください。
指定をしないか、指定したログ形式が間違っている場合は下記の画面が開きます。

画像はデフォルトの設定です。上から一般的なログ形式になりますが問題ないと思います。
手元にある他のログでも試してみましたが共有サーバのログはエラーになりました。

で、下記のように修正しました。
%v %h %^[%d:%t %^] “%r” %s %b “%R” “%u”
ログが読み込まれると下記の画像のようにデータが表示されます。 [q]キーで終了します。

3. 設定
HTMLで書き出すためのコマンドは下記になります。
goaccess ログファイル名パス / ログファイル.log -o report.html --log-format=COMBINED
report.htmlはカレントディレクトリ(現在のディレクトリ)に書き出されますので、Webサーバになっていればサーバディレクトリパスを指定します。
goaccess ログファイル名パス / ログファイル.log -o /var/www/html/report.html --log-format=COMBINED
ただし、ログ形式が違う場合は設定ファイルに追記する必要があります。
Ubuntuでは /etc/goaccess/goaccess.conf
を編集します。
既存のフォーマットはコメントアウトされています。
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %v %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
4. ダッシュボード
メニューから表データの非表示やカラーテーマ・レイアウト変更ができます。

依存ファイル無しのHTMLが出力されますので、そのままサーバにアップロードできちゃいます。 というわけで、サーバにアップロードするためにログを整形する必要が出てきました。
5. ログ整形
ログなので当たり前なのですが、botや管理画面などのログ行をフィルタして削除する必要がありました。 以下のように tail と grepで抽出できるのですが
tail -f -n +0 ログファイル名.log | grep --line-buffered 'Firefox' | goaccess -o firefox.html
時間がかかったのにも関わらず何も起きず。そのためPythonでフィルタしてログを整形しHTMLファイルに書き出すを繰り返した結果です。
Server Statistics https://demo.openshared.net/goaccess/
Crawler多すぎ。