亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python和Jenkins的設(shè)備異常診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2017-12-02 11:44:13信斌王桂花
        軟件導(dǎo)刊 2017年11期
        關(guān)鍵詞:自動(dòng)化

        信斌 王桂花

        摘要:為實(shí)時(shí)監(jiān)控設(shè)備運(yùn)行狀態(tài),自動(dòng)進(jìn)行設(shè)備異常診斷,解決當(dāng)前企業(yè)設(shè)備數(shù)量不斷增加和人工測(cè)試工作量越來越大的問題,設(shè)計(jì)了基于Python和Jenkins的設(shè)備異常自動(dòng)診斷系統(tǒng),實(shí)現(xiàn)了設(shè)備異常診斷監(jiān)控自動(dòng)執(zhí)行,以及故障報(bào)告自動(dòng)生成和推送。該系統(tǒng)利用python語言的開源和可擴(kuò)展特性,克服了傳統(tǒng)測(cè)試軟件的容量限制,縮短了系統(tǒng)開發(fā)時(shí)間,提高了系統(tǒng)開發(fā)效率。同時(shí),借助Jenkins的定時(shí)觸發(fā)特性,構(gòu)建了自動(dòng)化控制系統(tǒng),克服了人工觸發(fā)帶來的工作量大的弊端,極大提高了測(cè)試效率,實(shí)現(xiàn)了對(duì)測(cè)試設(shè)備的實(shí)時(shí)監(jiān)控。

        關(guān)鍵詞關(guān)鍵詞:Python;Jenkins;設(shè)備異常診斷系統(tǒng);設(shè)備監(jiān)控;自動(dòng)化

        DOIDOI:10.11907/rjdk.172347

        中圖分類號(hào):TP319

        文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)011011004

        0引言

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

        1系統(tǒng)結(jié)構(gòu)與流程

        1.1系統(tǒng)結(jié)構(gòu)

        通訊設(shè)備實(shí)驗(yàn)室一般有若干測(cè)試環(huán)境,每個(gè)環(huán)境內(nèi)又有一個(gè)控制節(jié)點(diǎn)設(shè)備和若干計(jì)算節(jié)點(diǎn)設(shè)備??刂乒?jié)點(diǎn)和

        計(jì)算節(jié)點(diǎn)之間通過局部網(wǎng)絡(luò)互通,但不同環(huán)境之間的計(jì)算接點(diǎn)不能互通。故障信息采集終端和所有的控制節(jié)點(diǎn)通過網(wǎng)絡(luò)相連,但不能直接和計(jì)算節(jié)點(diǎn)連接,即整個(gè)組網(wǎng)是一個(gè)樹狀的二級(jí)網(wǎng)絡(luò),如圖1所示。故障采集系統(tǒng)運(yùn)行在故障采集服務(wù)器上,通過控制節(jié)點(diǎn)采集設(shè)備運(yùn)行異常日志記錄,再進(jìn)行分析篩選,由Jenkins服務(wù)器負(fù)責(zé)故障采集、分析,并推送分析報(bào)告到測(cè)試環(huán)境負(fù)責(zé)人。

        1.2系統(tǒng)處理流程

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

        圖2系統(tǒng)處理流程

        2系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        2.1系統(tǒng)設(shè)計(jì)

        Python是一種面向?qū)ο蟮慕忉屝途幊陶Z言,具有開源和可擴(kuò)展特性[56]。采用Python開發(fā)測(cè)試系統(tǒng),有利于提高開發(fā)效率,縮短開發(fā)時(shí)間[79]?;赑ython的設(shè)備診斷系統(tǒng)包含SSH協(xié)議接口、信息采集、日志分析及故障報(bào)告生成等模塊,借助Jenkins實(shí)現(xiàn)整個(gè)任務(wù)的自動(dòng)定時(shí)調(diào)度,并將故障報(bào)告推送給相關(guān)測(cè)試人員。

        2.1.1SSH接口處理模塊

        監(jiān)控終端需要登錄到控制節(jié)點(diǎn)服務(wù)器(運(yùn)行Linux操作系統(tǒng))上,執(zhí)行異常日志的采集工作。Python的擴(kuò)展模塊Paramiko提供了SSH協(xié)議相關(guān)的一系列接口,對(duì)這些接口進(jìn)行二次封裝,將繁瑣的協(xié)議函數(shù)封裝為簡(jiǎn)單的接口,主要包括交互式執(zhí)行命令接口、SFTP下載文件接口。SSH接口模塊分為以下幾個(gè)部分:

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

        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命令執(zhí)行函數(shù):

        def ssh_exec_cmd(self,cmd):

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

        out=stdout.read()

        return out

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

        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

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

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

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

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

        該列表定義了多個(gè)命令序列,每個(gè)序列有3個(gè)元素,第1個(gè)元素是需要執(zhí)行的命令,第2個(gè)參數(shù)是執(zhí)行該命令后等待的時(shí)延值(等待系統(tǒng)進(jìn)行命令處理),第3個(gè)參數(shù)是該命令執(zhí)行后期望得到的結(jié)果。

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

        def download_file_from_remote(self,remotepathfile,localpathfile):

        self.sftp.get(remotepathfile,localpathfile)

        return

        2.1.2控制節(jié)點(diǎn)的異常日志信息采集模塊

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

        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計(jì)算節(jié)點(diǎn)的異常日志信息采集模塊

        通過SSH先登錄到控制節(jié)點(diǎn),執(zhí)行Linux遠(yuǎn)程拷貝命令,將計(jì)算節(jié)點(diǎn)的異常日志文件拷貝到控制節(jié)點(diǎn)的臨時(shí)目錄中,再下載到采集服務(wù)器。因?yàn)檫h(yuǎn)程拷貝SCP命令在執(zhí)行過程中需要和用戶交互(提示并等待用戶輸入遠(yuǎn)程Linux服務(wù)器的登錄口令),所以需要通過SSH模塊的交互式命令接口和預(yù)先設(shè)計(jì)好的命令序列來實(shí)現(xiàn)。代碼如下:

        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異常信息分析與故障報(bào)告生成模塊

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

        故障信息篩選完畢后,由報(bào)告生成模塊訪問數(shù)據(jù)庫(kù),將記錄的故障信息按html格式呈現(xiàn)出來。根據(jù)報(bào)告文件,設(shè)備負(fù)責(zé)人可以對(duì)故障設(shè)備進(jìn)行排查,并作出改進(jìn)。

        2.2系統(tǒng)實(shí)現(xiàn)

        以上系統(tǒng)實(shí)現(xiàn)了設(shè)備故障信息采集及分析功能,可一次性采集數(shù)百臺(tái)設(shè)備的運(yùn)行日志,并判斷其中的故障信息。但工具本身無法自動(dòng)運(yùn)行,仍需人工觸發(fā)。為達(dá)到節(jié)省人力并持續(xù)不斷地對(duì)實(shí)驗(yàn)室設(shè)備進(jìn)行監(jiān)控的目的,引入Jenkins構(gòu)建自動(dòng)化控制系統(tǒng)。

        Jenkins廣泛應(yīng)用于通訊及互聯(lián)網(wǎng)軟件開發(fā)的持續(xù)集成,是一個(gè)開源軟件,旨在提供一個(gè)開放易用的軟件平臺(tái),用于監(jiān)控重復(fù)工作,其功能包括:①持續(xù)的軟件版本發(fā)布/測(cè)試項(xiàng)目;②監(jiān)控外部調(diào)用執(zhí)行工作[1011]。本系統(tǒng)將開發(fā)的設(shè)備異常診斷系統(tǒng)作為一種外部調(diào)用功能,由Jenkins定時(shí)調(diào)用,借助Jenkins的定時(shí)觸發(fā)特性,實(shí)現(xiàn)設(shè)備異常監(jiān)控自動(dòng)化執(zhí)行。另外,Jenkins的郵件推送功能,可將設(shè)備異常診斷報(bào)告周期性地發(fā)送給設(shè)備維護(hù)負(fù)責(zé)人,實(shí)現(xiàn)“故障發(fā)現(xiàn)→報(bào)告→故障解決”閉環(huán)系統(tǒng)。endprint

        3診斷案例

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

        4結(jié)語

        基于Python和Jenkins的設(shè)備異常診斷系統(tǒng),利用python語言的開源和可擴(kuò)展特性,克服了傳統(tǒng)測(cè)試軟件的容量限制,提高了系統(tǒng)開發(fā)效率。引入Jenkins,借助Jenkins的定時(shí)觸發(fā)特性,構(gòu)建了自動(dòng)化控制系統(tǒng),節(jié)約了大量人力,實(shí)現(xiàn)設(shè)備異常診斷監(jiān)控的全自動(dòng)化周期執(zhí)行,以及故障報(bào)告的自動(dòng)生成和推送,極大提高了測(cè)試效率。

        參考文獻(xiàn)參考文獻(xiàn):

        [1]潘傳甲.機(jī)械設(shè)備遠(yuǎn)程監(jiān)控與故障診斷系統(tǒng)設(shè)計(jì)[J].中國(guó)設(shè)備工程,2017(10):5556.

        [2]齊永龍,宋斌,劉道煦.國(guó)外自動(dòng)測(cè)試系統(tǒng)發(fā)展綜述[J].國(guó)外電子測(cè)量技術(shù),2015(12):14.

        [3]步衛(wèi)麗.通訊設(shè)備故障監(jiān)控系統(tǒng)擴(kuò)容及其日常維護(hù)[J].無線互聯(lián)科技,2014(8):6970.

        [4]胡曉宏.基于圖像處理的設(shè)備異常檢測(cè)關(guān)鍵技術(shù)方針[J].計(jì)算機(jī)仿真,2016(1):425429.

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

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

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

        [8]賓俊,艾芳芳,劉念,等.基于Arduino和Python搭建的實(shí)時(shí)在線pH測(cè)量平臺(tái)[J].計(jì)算機(jī)與應(yīng)用化學(xué),2015(4):4852.

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

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

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

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

        猜你喜歡
        自動(dòng)化
        供電企業(yè)電力自動(dòng)化主站系統(tǒng)研究
        錦界煤礦連采膠帶機(jī)集控系統(tǒng)的介紹
        供熱站自動(dòng)控制系統(tǒng)中PLC的應(yīng)用
        AGV小車在白酒行業(yè)自動(dòng)化立體倉(cāng)庫(kù)中的應(yīng)用
        配電室無人職守集控站在京博石化的運(yùn)用
        科技視界(2016年20期)2016-09-29 14:13:02
        配電線路運(yùn)行資料管理自動(dòng)化的探討
        科技視界(2016年20期)2016-09-29 13:45:10
        久久综合噜噜激激的五月天| 亚洲欧美日本人成在线观看| 国产成人精品中文字幕| 自由成熟女性性毛茸茸应用特色| 亚洲国产精品无码专区在线观看| 天天影视色香欲综合久久| 国产精品无码素人福利不卡| 精品人妻少妇一区二区三区不卡| 国产精品无码专区综合网| 18禁成人免费av大片一区| 精品国产一区二区三区三级| 双腿张开被9个男人调教| 国产免费AV片在线看| 亚洲人成网站18男男| 国产精品久久av色婷婷网站| 欧美 日韩 人妻 高清 中文| 国产无遮挡a片又黄又爽| 国产美女精品AⅤ在线老女人| 在线观看国产一区二区av| 久久天天躁狠狠躁夜夜不卡| 无码中文字幕加勒比一本二本 | 鸭子tv国产在线永久播放| 亚洲一区二区综合色精品| 免费观看在线一区二区| 精品国产一区二区三区av| 女人被爽到呻吟gif动态图视看| 无码一区二区三区在线在看| 性感的小蜜桃在线观看| 欧美国产激情二区三区| 4444亚洲人成无码网在线观看| 精品国产福利一区二区三区| 国产精品亚洲一区二区麻豆| 少妇仑乱a毛片| 女性自慰网站免费看ww| 少妇太爽高潮在线播放| 国产a√无码专区亚洲av| 欧美精品一区二区性色a+v| 成人综合亚洲国产成人| 色哟哟亚洲色精一区二区| 久久亚洲精品成人av| 国产免费无码9191精品|