编程大赛第三轮总结
题目回顾
需要从日志文件中分析出结果和见解。有3个日志文件,总共100多万条记录。
实现方案优劣分析
有一点是非常明确的,在对数据进行分析前,必须要先将数据进行处理。对于数据的处理我们想到了3个方案:
1)将数据格式化处理后,按字段存入到数据库
使用程序读取日志文件,每一行通过正则匹配后取出对应字段的数据,然后存入数据库,优点就是实现简单快速,缺点就是有局限性,对于不同格式的日志需要准备不同的正则。
2)将数据存入ES,通过ES对数据索引处理后,再进行分析
这个方案比较通用,将数据处理好后,可以再存入数据库进行复杂的分析,缺点是需要安装ES,索引也会占用一定的硬盘空间。
3)直接读取文件,文件读取完毕后结果就出来了
写代码前需要确定分析的内容,适用于非常固定的分析需求,不具有灵活性,文件过大或过多会影响服务器性能的稳定性。优点是没有持久化的中间数据生成,几乎不占用空间。
我们最终选择方案1+方案2,先快速用现成的ES处理数据,再快速出一个分析结果。然后后我们用程序读取文件,通过正则匹配取出数据存入sqlite数据库。
数据分析
1)操作系统
分析出用户常用的操作系统,我们可以针对主流操作系统版本,将我们的软件进行优化,如老版操作系统还占比较大比例,我们应该继续保持兼容
2)浏览器分布
分析出主流浏览器,便于我们后续对前端的兼容考量
3)请求状态
将请求状态异常的数据进行分析,是否是用户的某个操作习惯导致的异常,便于后期优化程序
4)耗时
统计出最耗时的访问链接,以便于针对性优化,进一步定位问题
5)方法
统计出用户常访问的方法,根据该方法的传输特点,判断是否存在安全漏洞
6)ip访问次数排行
统计出高频访问的ip地址,找到对应的用户,便于准确定位到哪一类用户较为频繁使用服务,以便于我们后期更精准地为其提供软件服务
实现效果


后端:python+Django+sqlite
前端:vue+elementUi+v-charts
还没有评论,来说两句吧
