数据分析之--log文件自动化分析
https://mp.weixin.qq.com/s?__biz=MjM5NjE2MTIyMw==&mid=2257483803&idx=1&sn=efe24b040397cde3c16b890faf7f7717&chksm=a597abb392e022a5c1af95448abd4447a565e35199c2cd3a2f7b8891e52a20075b6ac312477d&mpshare=1&scene=1&srcid=&key=b79bd25d83f240ad4ead35697faece9905fec7160f80f3e6376d128d62c40b2d2cd2c2dfd66f8e9d1e0d9883cc9b6c1ed121ab9fb6fd2735650d82881c2aa4cdb5466c8ff2a9d42e0f950b87b7d3d2e1&ascene=1&uin=MjkxOTg1MjM0MQ%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=S2vPzhfsZuo41GgVm%2Bek%2FliLi7nmgHlTEw39G2Lj6C55DEWxmX9T49C45ZAKKswr
1. 提出问题
产品测试过程中会出现各种各样的问题,比如因为良品率导致机器终止或者产品本身的质量问题。一般测试都会产生测试记录,从log里面提取出需要的数据,整理成报告。log是被zip起来的csv文件,log又有很多个,每个里面又记录了不同的信息。log文件名包含时间戳,log里面包含时间机器号,单元,产品批次,以及原因,fail的分类,控制范围等信息。
需要实现的结果:生成图文报告,定期自动通过邮件将报告发送给相关人员。
2. 解决思路
使用bat脚本根据时间戳提取最近两个月的log文件到指定的文件夹。然后使用python进行解压,使用pandas进行数据提取处理。使用公司自己的数据库管理软件,对原始数据进行筛选,并使用软件集成的R,Python等工具生成图形报告,再用集成工具在服务器上进行运作,定期发送报告。
3. 具体实现过程
Bat script 提取最近两个月的文件:
@echo ON
xcopy /s /y "d:\event\log\log_201906*.zip" "C:\Users\sanmy\project\logs\"
xcopy /s /y "d:\event\log\log_201905*.zip" "C:\Users\sanmy\project\logs\"
Python 进行zip 解压
def file_name(file_dir):
L=[]
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.zip':
L.append(os.path.join(root, file))
return L
file_dirs=r'C:\Users\sanmy\project\logs\' t=file_name(file_dirs)for i in t: x=i[:-3]+'csv'for i in t: myzip=ZipFile(i) #print(myzip) #print(my_file) f=myzip.open(i[13:-3]+'csv') file=pd.read_csv(f) # name file link to get_data() function get_data()
使用pandas 进行数据提取(此处代码省略……)
def get_data():
……
……
log=file[['MC','A','action','time','year','month','day','times','dates','Fail']]
log.to_csv(r'.\logs.csv',mode='a')
4. 报告整理并发送邮件
最后将提取出来的数据进行分析整理,图形话,并生成图形文件,通过软件发送邮件给相关人员。
5. 结果与报告
此图为excel制作而成,数据是杜撰出来的,仅仅作为一个示例。而实际上生成了很多个图文报告的。
如图可以看出机器MC1 的报废率是最差的,可能是机器出现了问题。
总结:
在这个项目的实现过程中遇到了很多之前没有遇到过的问,比如文件的复制方法,因为在同一个文件夹下面还有很多其他名字的文件以及不同文件类型的文件,最后使用bat脚本实现也算是基本满足了需求,但是过一段时间之后又需要去更改copy文件的时间戳。python 在公司数据库处理软件上的支持情况不太清楚,后来询问了很多人最后才得以实现。对于数据库软件上集成的R语言生成的图片报告,在排序的时候也遇到问题,始终不是以数据量的大小来排序的,而是以X坐标轴来排序,最后自己慢慢尝试才琢磨出来。
虽然这不是一个很大的项目,但是前前后后花费了差不多3个月的时间。主要是在工作之余的时间来做的,但是对我自己来说也是收获颇多。主要花费时间在使用pandas 处理csv文件的时候,虽然这个地方的代码只有两百多行,但是里面涉及到了很多的基础知识以及以前没有使用过的新知识。
还有个地方就是将所有这些需要实现的功能部署到服务器上去,因为运行的环境,配置不同,在调试的时候花费了很多时间,同时也遇到很多雷区。不过这些经过耐心的学习与请教,都一一搞定。
最曲折的是一个地方是数据源本来有一个已经整理好的JMP(不知道JMP 的可以去百度)的文件,这个文件本身可以直接制作图形,但是缺点就是公司数据库软件不直接支持,需要将JMP 转换成csv文件。后来尝试了下使用JMP 的jsl脚本在server上运行,实现转换然后再使用公司数据库软件进行分析,最后也实现了相同的功能。但是刚刚实现没几天,公司不维护这个JMP 文件了,所有又折腾回来。
最终程序每天早晨8点定时运行,并且定时将报告发送给相关人员。对有问题的机器或者其他一些指标进行监控,发现异常及时采取行动,提高产品良品率,同时降低维护成本。
数据分析之--log文件自动化分析的更多相关文章
- Android中对Log日志文件的分析[转]
一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...
- Android如何分析和研究Monkey Log文件
Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 . 什么时候会有Log文件的产生 ...
- Android Log日志文件的分析、查看
Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 什么时候会产生log文件呢 ?一般 ...
- 分析和研究Monkey Log文件
Log 在Android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 . 什么时候会有Log文件的产生 ...
- 如何分析和研究Log文件 ,如何看日志信息
如何分析和研究Log文件 ,如何看日志信息 . Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处 ...
- 【原创】Kakfa log包源代码分析(二)
八.Log.scala 日志类,个人认为是这个包最重要的两个类之一(另一个是LogManager).以伴生对象的方式提供.先说Log object,既然是object,就定义了一些类级别的变量,比如定 ...
- ZooKeeper日志与快照文件简单分析
有用过Zookeeper的都知道zoo.cfg配置文件中有dataDir配置项用于存储数据,不过可能有些人不太清楚这个目录具体存储的是那些数据,默认情况下这个目录是用于存储Log(事务日志)与Snap ...
- SQL Server Log文件对磁盘的写操作大小是多少
原文:SQL Server Log文件对磁盘的写操作大小是多少 SQL Server 数据库有三种文件类型,分别是数据文件.次要数据文件和日志文件,其中日志文件包含着用于恢复数据库的所有日志信息,SQ ...
- 经典面试题目——250M内存处理10G大小的log文件
前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...
随机推荐
- union的使用
将多条select语句的结果,合并到一起,称为联合查询 使用union关键字 场景: 获取数据的条件,出现逻辑冲突,或者很难在一个逻辑内表示,就可以拆成多个逻辑,分别实现,最后将结果合并到一起 sel ...
- DELL R720针对磁盘故障面板信息误报解决
现象: 面板报警信息显示 PDR1101 fault detected on drive 0. Check drive... 经查资料是磁盘故障的原因,而r720的idrac似乎我们没有安装,我不能通 ...
- 外部服务发现-ingress
Ingress`其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx.haproxy 等负载均衡代理服务器,Ing ...
- Python标准库-数字的处理函数(math模块)
Python标准库-数字的处理函数(math模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. #!/usr/bin/env python #_*_conding:utf-8_* ...
- OpenStack核心组件-horizon web 界面管理
1. horizon 介绍 Horizon: Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 , ...
- KMP算法的时间复杂度与next数组分析
一.什么是 KMP 算法 KMP 算法是一种改进的字符串匹配算法,用于判断一个字符串是否是另一个字符串的子串 二.KMP 算法的时间复杂度 O(m+n) 三.Next 数组 - KMP 算法的核心 K ...
- 逆向破解之160个CrackMe —— 008-009
CrackMe —— 008 160 CrackMe 是比较适合新手学习逆向破解的CrackMe的一个集合一共160个待逆向破解的程序 CrackMe:它们都是一些公开给别人尝试破解的小程序,制作 c ...
- python的gui库tkinter
导入tkinter模块 import tkinter as tk 设置窗口名字和大小 frame=tk.Tk() frame.title('数学') frame.geometry('200x440') ...
- git免密
免账号密码输入 git clone https://lichuanfa%40gitcloud.com.cn:lcf13870752164@git.c.citic/Citic-Data/bigdata_ ...
- [转载]Linux进程调度原理
[转载]Linux进程调度原理 Linux进程调度原理 Linux进程调度的目标 1.高效性:高效意味着在相同的时间下要完成更多的任务.调度程序会被频繁的执行,所以调度程序要尽可能的高效: 2.加强交 ...