分析CDN日誌佔用流量最多的url

  有一天某時段一個頻道的CDN流量猛增幾百兆,分析CDN日誌查看是哪個URL使用的流量最多。輸出格式爲:URL:訪問地址  count:這URL訪問次數 flow:總的流量M 。實現思路爲:把日誌每條記錄split url爲key,流量爲value保存到詞典中。排序後輸出。

   提示:頻道日誌約爲8G,我機器才4G內存,用了readlines方法,處理起來較慢用幾分鐘才完成,有很多可以優化的空間。下面是statistics_flow.py的代碼,結果直接打印到屏幕了,如需結果可以重定向到文本文件中,希望腳本的思路和寫法給大家一些提示或幫助。



#!/usr/bin/python
#coding:utf-8
#Author by Qfeian@20140310
"""
Usage
python statistics_flow.py log_path
"""
import sys
from operator import itemgetter
if len(sys.argv) < 2:
    print __doc__
    sys.exit(1)
log = sys.argv[1]
f = open(log,'r')
url_flow = {}
url_num = {}
def sort_kv(dict, str=False):
    return sorted(dict.iteritems(), key=itemgetter(1), reverse=str)
for line in f.readlines():
    url = line.split()[6]
    flow = line.split()[9]
    if url in url_flow:
        url_num[url] += 1
        url_flow[url] = int(url_flow[url] + int(flow))
    else:
        url_num[url] = 1
        url_flow[url] = int(flow)
#sort and  print
sort_flow = sort_kv(url_flow, True)
                                           
for url,flow in sort_flow:
    print "URL: %s count: %d the flow: %.3fM" % (url,int(url_num[url]), float(flow)/(1000))
#The total number of url
print "The total url is %d" % len(url_num)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章