Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

https://github.com/winebarrel/agg

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away