LoginSignup
3
3

More than 5 years have passed since last update.

aggでアクセスログを単位時間ごとに集計する

Last updated at Posted at 2016-06-30

アクセスログを単位時間ごとに集計して状況をみることが多いのですが、毎度毎度awkスクリプトを書くのに疲れたので、専用ツールを作ってみました。

Installation

OSXの場合はHomebrewでインストールできます。

brew install https://raw.githubusercontent.com/winebarrel/agg/master/homebrew/agg.rb

その他のOSはアーカイブを展開すれば実行できます。
https://github.com/winebarrel/agg/releases

Usage

Usage of agg:
  -bar int
      ASCII bar length
  -s int
      Trim timestamp suffix length
  -t string
      count,countall,sum,avg,max,min (default "count")

実行例

まず、以下のようなアクセスログがあるとします。

$ cat access.log
12:10  FOO  100
12:10  FOO  200
12:10  BAR  300
12:11  FOO  200
12:11  BAR  300
12:11  BAR  400
12:12  ZOO  500

Count系

何もオプションをつけないと、タイムスタンプをそのまま集計して、値ごとの件数を出します。

$ awk '{print $1, $2}' access.log | agg
12:10 BAR:1 FOO:2
12:11 BAR:2 FOO:1
12:12 ZOO:1

-sオプションを渡すと、指定された長さ分タイムスタンプの末尾を削ります。
下の例では10分ごとの集計になります。

$ awk '{print $1, $2}' access.log | agg -s 1
12:1  BAR:3 FOO:3 ZOO:1

-t countallで値ごとではなくすべての値の合計件数を出します。
また、-barオプションで指定した最大値でのグラフを出します。

$ awk '{print $1, $2}' access.log | agg -t countall -bar 1
12:10 3 ###
12:11 3 ###
12:12 1 #

数値系

-t sumで値を数値と見なして、合計値を出します。

$ awk '{print $1, $3}' access.log | agg -t sum
12:10 600.000000
12:11 900.000000
12:12 500.000000

-t avg -t max -t minでそれぞれ平均値・最大値・最小値を出します。

$ awk '{print $1, $3}' access.log | agg -t avg
12:10 200.000000
12:11 300.000000
12:12 500.000000
$ awk '{print $1, $3}' access.log | agg -t max
12:10 300.000000
12:11 400.000000
12:12 500.000000
$ awk '{print $1, $3}' access.log | agg -t min
12:10 100.000000
12:11 200.000000
12:12 500.000000

-barオプションを渡すと指定された最大値でグラフを表示します。

$ awk '{print $1, $3}' access.log | agg -t sum --bar 1000
12:10 600.000000  ##############################
12:11 900.000000  #############################################
12:12 500.000000  #########################

似たようなツール

hystでコマンドラインでヒストグラムを書く - Qiita

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3