LTSV 形式の Web サーバのアクセスログを集計する、
tkuchiki/alp · GitHub を作成しました。
Install
https://github.com/tkuchiki/alp/releases から各 OS 用のバイナリを取得できます。
Linux 以外では動作確認していませんが、おそらく動作すると思います。
Usage
Labeled Tab-separated Values (LTSV) の Labels for Web server's Log みたいに log を出力すれば、
$ ./alp -f access.log +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ | COUNT | MIN | MAX | SUM | AVG | MAX(BODY) | MIN(BODY) | SUM(BODY) | AVG(BODY) | METHOD | URI | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ | 1 | 0.123 | 0.123 | 0.123 | 0.123 | 56.000 | 56.000 | 56.000 | 56.000 | GET | /foo/bar | | 3 | 0.057 | 0.234 | 0.391 | 0.130 | 12.000 | 34.000 | 80.000 | 26.667 | POST | /foo/bar | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ $ ./alp -f access.log -r +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ | COUNT | MIN | MAX | SUM | AVG | MAX(BODY) | MIN(BODY) | SUM(BODY) | AVG(BODY) | METHOD | URI | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ | 3 | 0.057 | 0.234 | 0.391 | 0.130 | 12.000 | 34.000 | 80.000 | 26.667 | POST | /foo/bar | | 1 | 0.123 | 0.123 | 0.123 | 0.123 | 56.000 | 56.000 | 56.000 | 56.000 | GET | /foo/bar | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+----------+ $ ./alp -f access.log -q +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+ | COUNT | MIN | MAX | SUM | AVG | MAX(BODY) | MIN(BODY) | SUM(BODY) | AVG(BODY) | METHOD | URI | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+ | 1 | 0.057 | 0.057 | 0.057 | 0.057 | 12.000 | 12.000 | 12.000 | 12.000 | POST | /foo/bar?token=xxx&uuid=xxx | | 1 | 0.123 | 0.123 | 0.123 | 0.123 | 56.000 | 56.000 | 56.000 | 56.000 | GET | /foo/bar?token=xxx | | 2 | 0.100 | 0.234 | 0.334 | 0.167 | 34.000 | 34.000 | 68.000 | 34.000 | POST | /foo/bar?token=xxx | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+ $ ./alp -f access.log -q -r +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+ | COUNT | MIN | MAX | SUM | AVG | MAX(BODY) | MIN(BODY) | SUM(BODY) | AVG(BODY) | METHOD | URI | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+ | 2 | 0.100 | 0.234 | 0.334 | 0.167 | 34.000 | 34.000 | 68.000 | 34.000 | POST | /foo/bar?token=xxx | | 1 | 0.123 | 0.123 | 0.123 | 0.123 | 56.000 | 56.000 | 56.000 | 56.000 | GET | /foo/bar?token=xxx | | 1 | 0.057 | 0.057 | 0.057 | 0.057 | 12.000 | 12.000 | 12.000 | 12.000 | POST | /foo/bar?token=xxx&uuid=xxx | +-------+-------+-------+-------+-------+-----------+-----------+-----------+-----------+--------+-----------------------------+
こんな感じに集計できます。
上記の例だと、-q
をつけると、QueryString の key? も含めて集計、
つけなければ QueryString 抜きで集計します。
-r
は逆順での出力です。
ltsv.org に書いてある通りの label を使っていない場合は、
--apptime-label
、--size-label
、--method-label
、--uri-label
で、
label を変更することができます。
何を基準に sort するかは、すべての項目を指定するオプションがあるので、
それを指定すれば OK です。
table 形式で出力したくない場合は、--tsv
をつければ TSV 形式で出力することができます。