Demo OpenShared

OpenShared Craft3 CMS デス

GoAccessを使ってWebサイトのアクセスログを解析する

published: , updated: 2020-07-17

画像:GoAccessを使ってWebサイトのアクセスログを解析する

アクセス解析といえばGoogle アナリティクスやYandexのMetarica、オープンソーズではOpenWebAnalyticsやMatomoになったPiwik。トラッキングに特化したサービスなどは多数あり、これらのアクセス解析は発行されたタグを各ページに埋め込むビーコン型のアクセス解析です。

このサイトでは記事ページにはJavascriptを使わないようにしているため、所謂ビーコン型の設置はできません。まさかパケットのアクセス解析などできるはずもなく、サーバのログで対応するのみです。

ログといえば所謂アクセス解析とは違ってLogseenを使ってアクセスしてくるbotや404を確認してました。

RやJupyterを使ってグラフ化したりもしてみましたが、ログなのでGoogle Analyticsのような解析はできないわけです。それでも何もないのは何も生み出さないのでGoAccessを使ってサーバのアクセスログを解析します。解析なのか?

GoAccess

  1. インストール
  2. ターミナル出力
  3. 設定
  4. ダッシュボード
  5. ログ整形

1. インストール

GoAccessのダウンロードページからインストール方法を確認します。

macOSのCatalinaに brew install goaccess でインストールしましたが、ログの解析が失敗します。[c] キーでログフォーマットを変更してみるのですがダメなので違う環境で試してみます。

2. ターミナル出力

Ubuntu18にインストールし起動します。

goaccess ログファイル名パス / ログファイル.log

開きたいログを goaccess の後に続いて指定します。ログ形式の指定をして起動することもできます。詳細はGoAccessの「Get Started」ページをご確認ください。 指定をしないか、指定したログ形式が間違っている場合は下記の画面が開きます。

画像:GoAccess ログ形式

画像はデフォルトの設定です。上から一般的なログ形式になりますが問題ないと思います。

手元にある他のログでも試してみましたが共有サーバのログはエラーになりました。

画像:GoAccess ログ形式エラー

で、下記のように修正しました。

%v %h %^[%d:%t %^] “%r” %s %b “%R” “%u”

ログが読み込まれると下記の画像のようにデータが表示されます。 [q]キーで終了します。

画像:GoAccess ターミナル出力

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. ダッシュボード

メニューから表データの非表示やカラーテーマ・レイアウト変更ができます。

画像:GoAccess テーマ変更

依存ファイル無しの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多すぎ。