Linuxメモ : GoAccessでリアルタイムにWebログ解析
GoAccess
GoAccess - Visual Web Log Analyzer(公式ページ)
GoAccessはリアルタイムにWebログを解析するツール(GoAccessという名前だがGoではなくCで書かれているようだ)。インストールすれば複雑な設定不要で利用できるので手軽に解析したいときに便利。ここにHTML版デモページがあるので解析項目等を確認できる。
解析可能なログフォーマットの一覧は下記。
- Amazon CloudFront (Download Distribution).
- Amazon Simple Storage Service (S3)
- AWS Elastic Load Balancing
- Combined Log Format (XLF/ELF) Apache | Nginx
- Common Log Format (CLF) Apache
- Google Cloud Storage.
- Apache virtual hosts
- Squid Native Format.
- W3C format (IIS).
インストール
CentOSの場合は下記コマンドを実行。
$ sudo yum install goaccess
Ubuntuの場合は下記コマンドを実行。
$ sudo apt-get install goaccess
macOSの場合はbrewでインストールできる。
$ brew install goaccess
その他のインストール方法については公式ページを参照。
使い方:ターミナル
基本
基本的な使い方はgoaccess
に続けてログファイルを指定する。
$ goaccess access.log
起動するとログフォーマットの設定ダイアログが表示されるので、Spaceキーでフォーマットを指定してエンターキーを押す(フォーマットが違う場合はFormat Errors
になる)。
解析が完了するとメインウィンドウが表示される。画面上部に全体の解析結果、その下に各項目の解析結果が表示される。
パネル(各項目の解析結果)の一覧は下記。デフォルトで無効になっている項目は/etc/goaccess.conf
(環境によりパスは違うかも)のignore-panel
設定で変更できる。
- Unique visitors per day - Including spiders
- Requested Files (URLs)
- Static Requests
- Not Found URLs (404s)
- Visitor Hostnames and IPs
- Operating Systems
- Browsers
- Time Distribution
- Virtual Hosts
- Referrers (デフォルトでは無効)
- Referring Sites
- Keyphrases (デフォルトでは無効)
- HTTP Status Codes
tail -f
tail -f
の出力を解析することも可能。
$ tail -f access.log | goaccess -
下記エラーが表示される場合は、
GoAccess - version 1.2 - Jul 23 2017 03:05:48 Config file: /etc/goaccess.conf Fatal error has occurred Error occured at: src/goaccess.c - set_curses - 1394 No time format was found on your conf file.
/etc/goaccess.conf
の下記項目を対象とするフォーマットに合わせて設定する。
time-format %H:%M:%S date-format %d/%b/%Y log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
複数ファイル
以下のように複数ファイルを対象とすることも可能。
$ goaccess access.log access.log.1 $ cat access.log.2 | goaccess access.log access.log.1 -
キーバインド
キー | 説明 |
---|---|
F1 or h or ? | ヘルプ |
F5 | メインウィンドウの再描画 |
q | 現在のウィンドウを閉じる。プログラムの終了 |
o or Enter | アクティブパネルを開く(詳細表示) |
0-9 and Shift + 0 | 番号のパネルへ移動 |
j | 開いたパネル内で下に移動 |
k | 開いたパネル内で上に移動 |
c | カラースキーム変更 |
Tab | 次のパネルに移動 |
Shist + Tab | 前のパネルに移動 |
Ctrl + f | 開いたパネル内で次画面にスクロール |
Ctrl + b | 開いたパネル内で前画面にスクロール |
s | パネルのソート画面表示 |
/ | 検索(正規表現可) |
n | 次の検索結果に移動 |
g | 先頭に移動 |
G | 末尾に移動 |
Tab
でパネルを選んで、
Enter
キーで詳細を表示。
s
でソート画面を表示。
c
でカラースキーム変更画面を表示。
使い方:HTML版
基本
デモページのようにHTML出力する場合は下記コマンドを実行。
$ goaccess access.log -a -o report.html
なお、jsonやcsvとして出力することも可能。
$ goaccess access.log -a -o json > report.json $ goaccess access.log --no-csv-summary -o csv > report.csv
リアルタイム解析
リアルタイムにHTML出力する場合は--real-time-html
を指定する。
$ goaccess access.log -o report.html --real-time-html
参考:ダミーログ生成
適当なログがなかったので今回はapache_log_gen
を使用してダミーログを生成した。
$ gem install apache-loggen $ apache-loggen --progress --rate 10 --limit 10000 out10000.log # 1秒あたり10レコード、最大10000レコード生成