作った理由
とある日の一日分の毎秒アクセス数を知りたいが「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行ないぞ」って気が付いたのが始まり)
というわけで、適当に作ったのが以下のスクリプトです。
なかなか雑だけど、スグできたのを思い出した。