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文件自动化分析的更多相关文章

  1. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...

  2. Android如何分析和研究Monkey Log文件

    Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 . 什么时候会有Log文件的产生 ...

  3. Android Log日志文件的分析、查看

    Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 什么时候会产生log文件呢 ?一般 ...

  4. 分析和研究Monkey Log文件

    Log 在Android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 . 什么时候会有Log文件的产生 ...

  5. 如何分析和研究Log文件 ,如何看日志信息

    如何分析和研究Log文件 ,如何看日志信息 . Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处 ...

  6. 【原创】Kakfa log包源代码分析(二)

    八.Log.scala 日志类,个人认为是这个包最重要的两个类之一(另一个是LogManager).以伴生对象的方式提供.先说Log object,既然是object,就定义了一些类级别的变量,比如定 ...

  7. ZooKeeper日志与快照文件简单分析

    有用过Zookeeper的都知道zoo.cfg配置文件中有dataDir配置项用于存储数据,不过可能有些人不太清楚这个目录具体存储的是那些数据,默认情况下这个目录是用于存储Log(事务日志)与Snap ...

  8. SQL Server Log文件对磁盘的写操作大小是多少

    原文:SQL Server Log文件对磁盘的写操作大小是多少 SQL Server 数据库有三种文件类型,分别是数据文件.次要数据文件和日志文件,其中日志文件包含着用于恢复数据库的所有日志信息,SQ ...

  9. 经典面试题目——250M内存处理10G大小的log文件

    前言 周末逛知乎的时候,看到的一个经典面试题目:http://www.zhihu.com/question/26435483.非常经典的一道分而治之的题目. 题目描写叙述例如以下: 有次面试遇到一个问 ...

随机推荐

  1. SparkSQL之dataframe写入mysql报错

    一.异常情况及解决方案 在使用Spark SQL的dataframe数据写入到相应的MySQL表中时,报错,错误信息如下: 代码的基本形式为: df.write.jdbc(url, result_ta ...

  2. robotframework Run keyword if ELSE 用法

    1.Run keyword if    后面必须跟 关键字 ,可以是你自己的, 也可以是 框架自带的 2.ELSE 必须是大写,

  3. Linux命令——groups

    groups用于查询当前用户的属组,没有参数.

  4. 网络空间安全基础篇(2)----wireshark

    wireshrak是一款通过本地端口,来抓取通过以太网获取的文件包,包括SMB HTTP FTP TELNET 等包 在网络安全比赛中最常用的就是HTTP协议,TELNET协议,FTP协议,SMB协议 ...

  5. composer.json详解

    composer.json 架构:https://docs.phpcomposer.com/04-schema.html#homepage composer.json 完全解析:https://lea ...

  6. python笔记42-http请求命令行工具(httpie)

    前言 通常我们需要快速的测试某个接口通不通,一般linux上用curl去发http请求,但是这个命令行工具语法有点复杂了,不够直观. python有一个给人类使用的requests库,非常的简单方便. ...

  7. ES6新特性之 let 、const

    在 ES6之前,ES5中js只有全局作用域和函数作用域,作用域是一个独立的地盘,让变量不外泄出去,但是上例中的变量就外泄了出去,所以此时 JS 没有块级作用域的概念. 全局作用域就是最外层的作用域,如 ...

  8. WORD添加批注(JAVA)

    import com.spire.doc.*;import com.spire.doc.documents.CommentMark;import com.spire.doc.documents.Com ...

  9. createTextRange 创建文本对象

    document.body.createTextRange 主要是用来对一些文本对象进行操作.比如你有一大段文字,都在同一个P标签内,但是你只希望通过JS改变其中的一小部分,这时就可以用createT ...

  10. linux 出错 “INFO: task java: xxx blocked for more than 120 seconds.” 的3种解决方案

    1 问题描述 最近搭建的一个linux最小系统在运行到241秒时在控制台自动打印如下图信息,并且以后每隔120秒打印一次. 仔细阅读打印信息发现关键信息是“hung_task_timeout_secs ...