在逛大牛的blog时发现的代码,然后就转过来了`(*∩_∩*)′,我自己一般是用awk进行统计的(并且用到了之前搜集到的一个纯真IP地址库的Python解析代码进行了地理位置的统计,大概就是:访问次数、IP地址、地理位置信息,如:“578 111.206.61.180 北京市/联通”),这里用的是Python,学到了如何用Python进行去重(思想就是:将IP地址存为数组下标进行去重以及计数,然后将IP地址和访问次数作为字典中的键值对)以及排序,代码如下:
#!/usr/bin/env python # coding=utf-8 import sys class Log: def __init__(self, filename, dic, count): self.filename = filename self.dic = dic self.count = count def parse(self): i = 1 f = file(self.filename) while True: line = f.readline() if len(line)==0: break ip = line.split(' ') if ip[0] in dic: self.dic[ip[0]] = self.dic[ip[0]]+1 else: self.dic[ip[0]] = i soredic = sorted(self.dic.items(), key=lambda d:d[1], reverse=True) counts = 0; for item in soredic: if counts==int(self.count): break print("IP: %stTotal Times: %s"%(item[0], item[1])) counts = counts+1 f.close() if __name__=="__main__": if len(sys.argv)<3: print('ntUsage: python parseLog.py /path/to/access.log topXntExample: python parseLog.py /path/to/access.log 20') sys.exit() dic={} log=Log(sys.argv[1], dic, sys.argv[2]) log.parse()
效果也不错,都可以直接和之前的解析IP地址的Python代码进行整合了。
然后想多说的一句就是,之前介绍过的ngxtop那个工具就是用Python写的,功能和效果比较给力,大家可以试试:ngxtop:在命令行实时监控 Nginx 的神器。
《 “用Python统计nginx日志中IP访问次数” 》 有 5 条评论
Python语言中计数方法的演变
https://segmentfault.com/a/1190000003975675
提供多种形式的计数方法,以及对比,值得参考学习。
去重计数的通用方法:
def count_if(my_list):
counts = {}
for item in my_list:
if item not in counts:
counts[item] = 0
counts[item] += 1
return counts
一个实时分析日志的python小脚本
http://peiqiang.net/2017/01/17/a-python-real-time-analyze-log-script.html
脚本主要运用了文件的seek和tell函数,原理如下:
1. 放入crontab,每5分钟执行一次
2. 只分析从上次读取日志文件的结束位置到这次读取文件时的末尾位置之间的日志,然后出结果
支持Nginx、Apache、Tomcat等标准WEB日志的分析
https://github.com/cisp/AccessLogAnylast
web日志分析工具
https://github.com/JeffXue/web-log-parser
`
web-log-parser为开源的分析web日志工具,采用python语言开发,具有灵活的日志格式配置。
`