數(shù)據(jù)分析之--log文件自動(dòng)化分析

本文是根據(jù)實(shí)際項(xiàng)目經(jīng)驗(yàn),對(duì)整個(gè)過(guò)程的一個(gè)復(fù)盤(pán)與總結(jié)。文中涉及的數(shù)據(jù),文件,圖片,程序都不是真實(shí)數(shù)據(jù),僅供參考說(shuō)明~

全文3000字,大概需要5-8分鐘時(shí)間閱讀!

1. 提出問(wèn)題

產(chǎn)品測(cè)試過(guò)程中會(huì)出現(xiàn)各種各樣的問(wèn)題,比如因?yàn)榱计仿蕦?dǎo)致機(jī)器終止或者產(chǎn)品本身的質(zhì)量問(wèn)題。一般測(cè)試都會(huì)產(chǎn)生測(cè)試記錄,從log里面提取出需要的數(shù)據(jù),整理成報(bào)告。log是被zip起來(lái)的csv文件,log又有很多個(gè),每個(gè)里面又記錄了不同的信息。log文件名包含時(shí)間戳,log里面包含時(shí)間機(jī)器號(hào),單元,產(chǎn)品批次,以及原因,fail的分類,控制范圍等信息。

需要實(shí)現(xiàn)的結(jié)果:生成圖文報(bào)告,定期自動(dòng)通過(guò)郵件將報(bào)告發(fā)送給相關(guān)人員。

2. 解決思路

使用bat腳本根據(jù)時(shí)間戳提取最近兩個(gè)月的log文件到指定的文件夾。然后使用python進(jìn)行解壓,使用pandas進(jìn)行數(shù)據(jù)提取處理。使用公司自己的數(shù)據(jù)庫(kù)管理軟件,對(duì)原始數(shù)據(jù)進(jìn)行篩選,并使用軟件集成的R,Python等工具生成圖形報(bào)告,再用集成工具在服務(wù)器上進(jìn)行運(yùn)作,定期發(fā)送報(bào)告。

3. 具體實(shí)現(xiàn)過(guò)程

Bat script 提取最近兩個(gè)月的文件:

@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 進(jìn)行zip 解壓

deffile_name(file_dir):

L=[]

forroot, dirs, filesinos.walk(file_dir):

forfileinfiles:

ifos.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')??

ile=pd.read_csv(f) # name file link to get_data() function?

get_data()

使用pandas 進(jìn)行數(shù)據(jù)提?。ù颂幋a省略……)

def get_data():

……

……

log=file[['MC','A','action','time','year','month','day','times','dates','Fail']]

log.to_csv(r'.\logs.csv',mode='a')

4. 報(bào)告整理并發(fā)送郵件

最后將提取出來(lái)的數(shù)據(jù)進(jìn)行分析整理,圖形話,并生成圖形文件,通過(guò)軟件發(fā)送郵件給相關(guān)人員。

5. 結(jié)果與報(bào)告

此圖為excel制作而成,數(shù)據(jù)是杜撰出來(lái)的,僅僅作為一個(gè)示例。而實(shí)際上生成了很多個(gè)圖文報(bào)告的。

如圖可以看出機(jī)器MC1 的報(bào)廢率是最差的,可能是機(jī)器出現(xiàn)了問(wèn)題。

總結(jié):

在這個(gè)項(xiàng)目的實(shí)現(xiàn)過(guò)程中遇到了很多之前沒(méi)有遇到過(guò)的問(wèn),比如文件的復(fù)制方法,因?yàn)樵谕粋€(gè)文件夾下面還有很多其他名字的文件以及不同文件類型的文件,最后使用bat腳本實(shí)現(xiàn)也算是基本滿足了需求,但是過(guò)一段時(shí)間之后又需要去更改copy文件的時(shí)間戳。python 在公司數(shù)據(jù)庫(kù)處理軟件上的支持情況不太清楚,后來(lái)詢問(wèn)了很多人最后才得以實(shí)現(xiàn)。對(duì)于數(shù)據(jù)庫(kù)軟件上集成的R語(yǔ)言生成的圖片報(bào)告,在排序的時(shí)候也遇到問(wèn)題,始終不是以數(shù)據(jù)量的大小來(lái)排序的,而是以X坐標(biāo)軸來(lái)排序,最后自己慢慢嘗試才琢磨出來(lái)。

雖然這不是一個(gè)很大的項(xiàng)目,但是前前后后花費(fèi)了差不多3個(gè)月的時(shí)間。主要是在工作之余的時(shí)間來(lái)做的,但是對(duì)我自己來(lái)說(shuō)也是收獲頗多。主要花費(fèi)時(shí)間在使用pandas 處理csv文件的時(shí)候,雖然這個(gè)地方的代碼只有兩百多行,但是里面涉及到了很多的基礎(chǔ)知識(shí)以及以前沒(méi)有使用過(guò)的新知識(shí)。

還有個(gè)地方就是將所有這些需要實(shí)現(xiàn)的功能部署到服務(wù)器上去,因?yàn)檫\(yùn)行的環(huán)境,配置不同,在調(diào)試的時(shí)候花費(fèi)了很多時(shí)間,同時(shí)也遇到很多雷區(qū)。不過(guò)這些經(jīng)過(guò)耐心的學(xué)習(xí)與請(qǐng)教,都一一搞定。

最曲折的是一個(gè)地方是數(shù)據(jù)源本來(lái)有一個(gè)已經(jīng)整理好的JMP(不知道JMP 的可以去百度)的文件,這個(gè)文件本身可以直接制作圖形,但是缺點(diǎn)就是公司數(shù)據(jù)庫(kù)軟件不直接支持,需要將JMP 轉(zhuǎn)換成csv文件。后來(lái)嘗試了下使用JMP 的jsl腳本在server上運(yùn)行,實(shí)現(xiàn)轉(zhuǎn)換然后再使用公司數(shù)據(jù)庫(kù)軟件進(jìn)行分析,最后也實(shí)現(xiàn)了相同的功能。但是剛剛實(shí)現(xiàn)沒(méi)幾天,公司不維護(hù)這個(gè)JMP 文件了,所有又折騰回來(lái)。

最終程序每天早晨8點(diǎn)定時(shí)運(yùn)行,并且定時(shí)將報(bào)告發(fā)送給相關(guān)人員。對(duì)有問(wèn)題的機(jī)器或者其他一些指標(biāo)進(jìn)行監(jiān)控,發(fā)現(xiàn)異常及時(shí)采取行動(dòng),提高產(chǎn)品良品率,同時(shí)降低維護(hù)成本。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容