999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python和Jenkins的設備異常診斷系統設計與實現

2017-12-02 11:44:13信斌王桂花
軟件導刊 2017年11期
關鍵詞:自動化

信斌 王桂花

摘要:為實時監控設備運行狀態,自動進行設備異常診斷,解決當前企業設備數量不斷增加和人工測試工作量越來越大的問題,設計了基于Python和Jenkins的設備異常自動診斷系統,實現了設備異常診斷監控自動執行,以及故障報告自動生成和推送。該系統利用python語言的開源和可擴展特性,克服了傳統測試軟件的容量限制,縮短了系統開發時間,提高了系統開發效率。同時,借助Jenkins的定時觸發特性,構建了自動化控制系統,克服了人工觸發帶來的工作量大的弊端,極大提高了測試效率,實現了對測試設備的實時監控。

關鍵詞關鍵詞:Python;Jenkins;設備異常診斷系統;設備監控;自動化

DOIDOI:10.11907/rjdk.172347

中圖分類號:TP319

文獻標識碼:A文章編號文章編號:16727800(2017)011011004

0引言

隨著計算機及通訊技術的發展,傳統的集中式電路交換網絡逐漸被分布式云計算網絡所替代。通訊網絡正向云計算和虛擬化方向進化,設備運行環境越來越復雜,受外界因素的影響和干擾越來越多,設備故障監控的時效和自動化要求越來越高[12]。設備運行維護和測試對象,由原來的少數大型設備變成了成百上千的刀片式服務器,設備故障監控技術、系統擴容和日常診斷都面臨很大挑戰[34]。實現設備的實時監控,降低設備異常,減少危害和損失迫在眉睫。

1系統結構與流程

1.1系統結構

通訊設備實驗室一般有若干測試環境,每個環境內又有一個控制節點設備和若干計算節點設備。控制節點和

計算節點之間通過局部網絡互通,但不同環境之間的計算接點不能互通。故障信息采集終端和所有的控制節點通過網絡相連,但不能直接和計算節點連接,即整個組網是一個樹狀的二級網絡,如圖1所示。故障采集系統運行在故障采集服務器上,通過控制節點采集設備運行異常日志記錄,再進行分析篩選,由Jenkins服務器負責故障采集、分析,并推送分析報告到測試環境負責人。

1.2系統處理流程

系統處理流程:①Jenkins自動定時觸發;②程序讀取配置文件,進行初始化,采集各通訊設備上的運行日志并保存;③根據異常關鍵字,用正則表達式匹配方法,分析設備運行日志,找出故障;④將篩選出來的故障信息匯總,生成測試報告,Jenkins回收測試報告,并將其通過郵件發送給相關測試人員。如圖2所示。

圖2系統處理流程

2系統設計與實現

2.1系統設計

Python是一種面向對象的解釋型編程語言,具有開源和可擴展特性[56]。采用Python開發測試系統,有利于提高開發效率,縮短開發時間[79]?;赑ython的設備診斷系統包含SSH協議接口、信息采集、日志分析及故障報告生成等模塊,借助Jenkins實現整個任務的自動定時調度,并將故障報告推送給相關測試人員。

2.1.1SSH接口處理模塊

監控終端需要登錄到控制節點服務器(運行Linux操作系統)上,執行異常日志的采集工作。Python的擴展模塊Paramiko提供了SSH協議相關的一系列接口,對這些接口進行二次封裝,將繁瑣的協議函數封裝為簡單的接口,主要包括交互式執行命令接口、SFTP下載文件接口。SSH接口模塊分為以下幾個部分:

(1)定義SSH初始化函數:

def __init__(self, hostname,port,username,passwd):

self.ssh=paramiko.SSHClient()

self.ssh.load_system_host_keys()

self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

self.ssh. Connect(hostname,port,username,passwd,timeout=2)

self.sftp=self.ssh.open_sftp()

self.channel=self.ssh.get_transport().open_session()

self.channel.get_pty()

self.channel.invoke_shell()

self.channel.settimeout(20.0)

(2)定義SSH命令執行函數:

def ssh_exec_cmd(self,cmd):

stdin,stdout,stderr=self.ssh.exec_command(cmd)

out=stdout.read()

return out

(3)定義SSH交互式命令執行函數:

def ssh_interactive_command(self,cmdlist):

for cmd in cmdlist:

command=cmd[0]+'\\n'

delaytime=int(cmd[1])

expected=cmd[2]

self.channel.send(command)

time.sleep(delaytime)

outstring=self.channel.recv(65535)

if outstring.find(expected)<0:

return False

return Trueendprint

該函數用來執行人機交互命令。例如登錄Linux服務器,在登錄過程中,系統會提示用戶輸入用戶名、口令,登錄成功后,繼續執行其它命令。人工操作時這些交互都不是問題,但在程序自動化處理過程中需要代碼識別等交互元素,在正確的時機輸入正確的命令字符串。函數通過一個預先定義的列表來傳遞交互式命令序列,并對上一命令的執行結果和參數定義的預期結果進行比較。只有得到期望結果時才執行下一個命令。一個典型的命令序列參數如下:

cmdlist=[ ('ssh root@129.0.2.1' , 2, "password"),

('my_pass', 2, "~ MYM"),

('cp -f /IDE0/*.* /home/temp123', 2, "~#")]

該列表定義了多個命令序列,每個序列有3個元素,第1個元素是需要執行的命令,第2個參數是執行該命令后等待的時延值(等待系統進行命令處理),第3個參數是該命令執行后期望得到的結果。

(4)定義SFTP文件傳輸函數:

def download_file_from_remote(self,remotepathfile,localpathfile):

self.sftp.get(remotepathfile,localpathfile)

return

2.1.2控制節點的異常日志信息采集模塊

控制節點能夠和日志采集服務器直接通訊,可以用SSH模塊的SFTP接口直接下載異常日志文件到本地。相應的Python代碼 (函數的第1個參數是在初始化階段已經創建的SSH客戶端模塊實例,第2個參數指定異常日志文件所在的路徑,第3個參數指定異常日志文件拷貝的目的路徑) 如下:

def Get_ExcLog_from_control_node(self,ssh_client, exc_log_dir ,local_save_dir):

cmd_out=ssh_client.ssh_exec_cmd('ls ' + exc_log_dir)

if cmd_out is not None and len(cmd_out) !=0:

filename_list=cmd_out.strip().split('\\n')

else:

return

for filename in filename_list:

src_file=exc_log_dir + '/' + filename

dst_file=os.path.join(local_save_dir,filename)

cmd_out=ssh_client.download_file_from_remote(src_file,dst_file)

2.1.3計算節點的異常日志信息采集模塊

通過SSH先登錄到控制節點,執行Linux遠程拷貝命令,將計算節點的異常日志文件拷貝到控制節點的臨時目錄中,再下載到采集服務器。因為遠程拷貝SCP命令在執行過程中需要和用戶交互(提示并等待用戶輸入遠程Linux服務器的登錄口令),所以需要通過SSH模塊的交互式命令接口和預先設計好的命令序列來實現。代碼如下:

def Get_ExcLog_from_subnode(self,ssh_client, node_ip, file_list, pass,local_save_dir):

for exc_file in file_list:

cmdlist=[(r"scp root@%s:%s /temp" % (node_ip,exc_file), 3, "password"),

(pass, 5, ""),]

ssh_client.ssh_interactive_command(cmdlist)

self.Get_ExcLog_from_control_node(ssh_client, '/temp', local_save_dir)

2.1.4異常信息分析與故障報告生成模塊

將實驗室內所有設備的異常日志文件采集到本地后,日志分析模塊對這些文件中的異常記錄進行篩選,按異常關鍵字掃描所有文件,判斷故障信息(例如異常日志中出現mem leak,則說明出現內存泄漏,出現dead lock說明出現死鎖,出現last words說明設備某模塊曾經出現過宕機并重啟,有留言說明重啟原因等),并將這些信息按設備名稱、設備負責人、故障發現時間、故障信息簡述分類錄入數據庫中。

故障信息篩選完畢后,由報告生成模塊訪問數據庫,將記錄的故障信息按html格式呈現出來。根據報告文件,設備負責人可以對故障設備進行排查,并作出改進。

2.2系統實現

以上系統實現了設備故障信息采集及分析功能,可一次性采集數百臺設備的運行日志,并判斷其中的故障信息。但工具本身無法自動運行,仍需人工觸發。為達到節省人力并持續不斷地對實驗室設備進行監控的目的,引入Jenkins構建自動化控制系統。

Jenkins廣泛應用于通訊及互聯網軟件開發的持續集成,是一個開源軟件,旨在提供一個開放易用的軟件平臺,用于監控重復工作,其功能包括:①持續的軟件版本發布/測試項目;②監控外部調用執行工作[1011]。本系統將開發的設備異常診斷系統作為一種外部調用功能,由Jenkins定時調用,借助Jenkins的定時觸發特性,實現設備異常監控自動化執行。另外,Jenkins的郵件推送功能,可將設備異常診斷報告周期性地發送給設備維護負責人,實現“故障發現→報告→故障解決”閉環系統。endprint

3診斷案例

某通訊設備測試實驗室共有20套虛擬化測試環境,每套環境部署12個設備節點(刀片式服務器),每個節點都有可能產生異?;蚬收希皶r發現這些故障并查證故障原因是測試工作的重要部分。以往測試工作中,數百個設備由測試工程師手工采集信息并篩選出有效故障,需要耗費1人1天的工作量,因此一般是每周才測試一次。但故障的發生是隨機的,發現越早解決問題越及時。實施本系統后,每天可根據需要自動執行多次采集與診斷任務,自動生成測試報告,不僅節省了大量的人力,還極大提高了測試效率,縮短了軟件開發和測試周期,如表1所示。

4結語

基于Python和Jenkins的設備異常診斷系統,利用python語言的開源和可擴展特性,克服了傳統測試軟件的容量限制,提高了系統開發效率。引入Jenkins,借助Jenkins的定時觸發特性,構建了自動化控制系統,節約了大量人力,實現設備異常診斷監控的全自動化周期執行,以及故障報告的自動生成和推送,極大提高了測試效率。

參考文獻參考文獻:

[1]潘傳甲.機械設備遠程監控與故障診斷系統設計[J].中國設備工程,2017(10):5556.

[2]齊永龍,宋斌,劉道煦.國外自動測試系統發展綜述[J].國外電子測量技術,2015(12):14.

[3]步衛麗.通訊設備故障監控系統擴容及其日常維護[J].無線互聯科技,2014(8):6970.

[4]胡曉宏.基于圖像處理的設備異常檢測關鍵技術方針[J].計算機仿真,2016(1):425429.

[5]MARK LUTZ. Python編程[M].鄒曉,譯.北京:中國電力出版社,2015.

[6]薩默菲爾德.Python 3程序開發指南[M].王弘博,孫傳慶,譯.北京:人民郵電出版社,2015.

[7]邵婧,陳左寧,殷紅武.面向Python的信息流控制模型及其實現[J].計算機應用研究,2015(10):30653069.

[8]賓俊,艾芳芳,劉念,等.基于Arduino和Python搭建的實時在線pH測量平臺[J].計算機與應用化學,2015(4):4852.

[9]蔣崇武,劉斌,王軼辰,等.基于Python的實時嵌入式軟件測試腳本[J].計算機工程,2009(15):6466.

[10]周瑩,歐中紅,李俊.基于Jenkins的持續集成自動部署研究[J].計算機與數字工程,2016(2):267270.

[11]趙杰昌,張良宇.基于Jenkins構建持續集成系統[J].電腦編程技巧與維護,2014(9):910.

責任編輯(責任編輯:杜能鋼)endprint

猜你喜歡
自動化
供電企業電力自動化主站系統研究
錦界煤礦連采膠帶機集控系統的介紹
供熱站自動控制系統中PLC的應用
AGV小車在白酒行業自動化立體倉庫中的應用
中國市場(2016年36期)2016-10-19 03:40:15
配電室無人職守集控站在京博石化的運用
科技視界(2016年20期)2016-09-29 14:13:02
配電線路運行資料管理自動化的探討
科技視界(2016年20期)2016-09-29 13:45:10
主站蜘蛛池模板: av在线无码浏览| 欧美一级黄片一区2区| 一级毛片免费观看久| 日本一本正道综合久久dvd| 欧美一级特黄aaaaaa在线看片| 欧美特黄一级大黄录像| 久久福利网| 成人欧美在线观看| 欧美中文字幕第一页线路一| 夜夜高潮夜夜爽国产伦精品| 青青草国产一区二区三区| 宅男噜噜噜66国产在线观看| 黄色不卡视频| 日韩无码黄色| 国产91视频观看| 亚洲欧美不卡视频| 欧美激情首页| 一级做a爰片久久毛片毛片| 91尤物国产尤物福利在线| 亚洲成人精品在线| 国产激情无码一区二区免费 | 丁香五月婷婷激情基地| 亚洲欧美精品一中文字幕| 亚洲欧美另类中文字幕| 欧洲熟妇精品视频| 91精品啪在线观看国产91| 国产精品久久久久久影院| 五月婷婷导航| 久久美女精品| 欧类av怡春院| 3344在线观看无码| 日韩免费成人| 亚洲无码电影| 91蝌蚪视频在线观看| 最新无码专区超级碰碰碰| 无码福利日韩神码福利片| 亚洲视频三级| 天天综合网色中文字幕| 成人中文在线| 四虎成人精品| 免费久久一级欧美特大黄| 欧美成人免费一区在线播放| 综合五月天网| 国产一级一级毛片永久| 亚洲国产成熟视频在线多多| 国产精品无码翘臀在线看纯欲| 在线观看精品国产入口| 亚洲AV无码久久天堂| 国产美女在线免费观看| 欧美激情二区三区| 欧美在线视频不卡第一页| 国产精品深爱在线| 亚洲永久精品ww47国产| 40岁成熟女人牲交片免费| 伊人色在线视频| 老熟妇喷水一区二区三区| 日韩在线播放中文字幕| 蜜臀AV在线播放| 啊嗯不日本网站| 精品成人免费自拍视频| 午夜精品久久久久久久无码软件 | 国产精品污视频| 国产真实乱了在线播放| 粗大猛烈进出高潮视频无码| 久久99热66这里只有精品一| 国产亚洲精久久久久久无码AV | 国产91在线|日本| 久久这里只精品国产99热8| 日日噜噜夜夜狠狠视频| jijzzizz老师出水喷水喷出| 99视频只有精品| 亚洲精品日产精品乱码不卡| 制服丝袜在线视频香蕉| 亚洲一区二区三区香蕉| 国产一级α片| 国产高清在线丝袜精品一区| 国产第八页| 色综合成人| 国产亚洲精品自在久久不卡 | 亚洲综合一区国产精品| 成人国产小视频| 免费不卡视频|