LoginSignup
1
2

More than 5 years have passed since last update.

PythonでWebサーバのログから一日分の毎秒ヒット数を集計

Posted at

作った理由

とある日の一日分の毎秒アクセス数を知りたいが「uniq -c」などではアクセスがない秒は、抜けてしまっていたのでナントカしようと思った。

hits.py
#!/usr/bin/env python
import sys

def main():

    dict = {}

    #init dict
    for hour in range(24):
        for min in range(60):
            for sec in range(60):
                hhmmdd = '%02d:%02d:%02d' % (hour, min, sec,)
                dict[hhmmdd] = 0


    #read stdin
    for line in sys.stdin:
        text = line.rstrip('\n')
        dict[text] = dict[text] + 1


    #print hit/s
    for hour in range(24):
        for min in range(60):
            for sec in range(60):
                hhmmdd = '%02d:%02d:%02d' % (hour, min, sec,)
                print '%s %d' % (hhmmdd, dict[hhmmdd])


if __name__ == '__main__':
    main()

使い方

Webサーバのログの時分秒の部分を渡す

$ cat /var/log/httpd/access_log | cut -d" " -f4 | cut -d":" -f2- | python hits.py

雑談

SSDの整理をしていたら、その昔ちょこちょこと作ったインチキスクリプトが出てきたのでQiitaに乗せてみました。
Apacheのログから秒間アクセス数を知りたいので「uniq -c」コマンドで集計をしたいたが、よくよく考えるとアクセスがない秒は"0"ではなく抜けてしまっていた。凄く当たり前の事だ・・・
(一日分の秒間アクセス数を集計したのに「あれ?86400行ないぞ」って気が付いたのが始まり)

というわけで、適当に作ったのが以下のスクリプトです。
なかなか雑だけど、スグできたのを思い出した。

1
2
2

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
1
2