阿里云

Python只需300行实现分析服务器日志功能

我是做后端开发的,服务器日志分析这工作把和我没有太大的关系,但是本人也是一个站长,运维工作都是自己做的,所以日志分析还是要有的,并且也要经常看看,在日志中去发现问题处理问题。及时作出相应的调整。

微信截图_20200103222817.png

受新冠肺炎的影响,最近一周都是在家办公的状态,今天是周日,没有开启办公模式。就抽出时间写了一个python的小功能。代码量在290行,更多的代码是方便使用和导出效果,毕竟是要分享给大家的。不能搞得太丑了,这不符合我的美男子气质!

一、实现思路

为了后期使用方面将代码打包成了EXE文件,这样就涉及到了一个问题,就是如何选择日志文件,最后想到的解决办法是程序自动扫描当前目录或将当前目录的子目录一起扫描,将后缀文件为.log的文件路径返回,最终以列表的形式进行展现。通过序号进行选择需要解析的文件。代码上首先读取每一行文件,对行数据做出解析,主要解析的数据有读取文件、客户端IP地址、状态码、IP、URL出现次数、开始时间、结束时间这几项数据。最终以txt文本形式生成结果,方便查看数据。

二、代码解析

使用类库time、datetime、re、os,这四项基础库。time主要是用来提示的,实际的意义没有,考虑到体验问题才引入的;os主要用来获取文件目录数据、读取文件、生成文件等;datatime只是用来做分析耗时,意义并不是很大;re用来提取、处理数据,主要是利用正则模式处理数据;

三、解析结果

--------------------------------------------------
| 数据分析结果如下:
| 共计分析日志:1行
|
| 状态码数据如下:
| 状态码:200,出现 195729 次
| 状态码:301,出现 2080627 次
| 状态码:302,出现 1591 次
| 状态码:404,出现 995912 次
| 状态码:500,出现 456 次
| 状态码:502,出现 2 次
| 状态码:503,出现 1 次
| 状态码:其他,出现 0 次
|
| 访问IP段前十数据如下:
| IP:110.249.0.0,出现: 1021323 次
| IP:111.225.0.0,出现: 1017103 次
| IP:60.8.12.0.0,出现: 657566 次
| IP:220.243.0.0,出现: 300185 次
| IP:78.46.1.0.0,出现: 70569 次
| IP:49.7.44.0.0,出现: 33423 次
| IP:49.7.45.0.0,出现: 29028 次
| IP:203.208.0.0,出现: 27843 次
| IP:123.58..0.0,出现: 18709 次
| IP:106.120.0.0,出现: 15508 次
|
| 访问链接前十数据如下:
|
| 日志开始时间: 2020年2月05日 11:13:17
| 日志结束时间: 2020年2月05日 11:13:17
|
| 分析结束,共耗时: 0:04:01
--------------------------------------------------


实际测试数据日志文件905M,共含有数据4045条,耗时3分钟,后续会继续优化这个代码,现在来看耗时比较长、效率不是很高。

四、分享

百度网盘下载:

链接:https://pan.baidu.com/s/1EJe0hYKfApoKCP0K_vkJww 

提取码:c5tx

喜欢就点个赞吧

发表评论

需要先登录,才能发表评论哦!登录

网友评论
暂无评论