前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python只需300行实现分析服务器日志功能

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

作者头像
申霖
发布2020-02-17 11:37:43
1.1K1
发布2020-02-17 11:37:43
举报
文章被收录于专栏:小白程序猿小白程序猿

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

微信截图_20200103222817.png
微信截图_20200103222817.png

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

一、实现思路

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

二、代码解析

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

三、解析结果

代码语言:javascript
复制
--------------------------------------------------
| 数据分析结果如下:
| 共计分析日志: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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档