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

        ?

        基于Web的智能設(shè)備監(jiān)控管理平臺(tái)設(shè)計(jì)研究

        2023-11-25 02:19:52譚俊偉譚瑞鑫黃紅橋陳明
        電腦知識(shí)與技術(shù) 2023年28期
        關(guān)鍵詞:嵌入式環(huán)境用戶

        譚俊偉,譚瑞鑫,黃紅橋,陳明

        (1.冷水灘區(qū)財(cái)政局,湖南永州 425000;2.國(guó)網(wǎng)湖南電力有限公司,湖南長(zhǎng)沙 410000)

        0 引言

        隨著中國(guó)國(guó)產(chǎn)化芯片及操作系統(tǒng)的進(jìn)一步推進(jìn),越來(lái)越多的國(guó)產(chǎn)物聯(lián)網(wǎng)設(shè)備出現(xiàn)在了當(dāng)下,給未來(lái)國(guó)內(nèi)物聯(lián)網(wǎng)發(fā)展帶來(lái)了無(wú)限可能。而隨著這些嵌入式設(shè)備的不斷增多,如何對(duì)其進(jìn)行有效的集中化的監(jiān)控與管理成為擺在時(shí)代面前的一大難題。例如在國(guó)網(wǎng)湖南電力公司永州分公司,有許多電表計(jì)量的嵌入式設(shè)備及為無(wú)人機(jī)提供算力平臺(tái)的算力服務(wù)器需要遠(yuǎn)程控制及維護(hù),但因缺乏有效的監(jiān)控與管理平臺(tái),這往往成為職工們比較頭疼的問(wèn)題。這是由于現(xiàn)如今普通電腦一般使用的為Windows 操作系統(tǒng)及X86 或X64平臺(tái),與嵌入式設(shè)備及提供算力的服務(wù)器一樣既跨越了操作系統(tǒng),亦跨越了架構(gòu)體系,要直接對(duì)其核心數(shù)據(jù)進(jìn)行監(jiān)控以及對(duì)其管理十分不便。因此本文探索并研究了一種較為高效的管理方式,即基于Web開發(fā)的智能化設(shè)備監(jiān)控管理平臺(tái)。該平臺(tái)前端使用多個(gè)H5新特性以及Vue框架開發(fā),界面美觀,性能優(yōu)越,交互體驗(yàn)優(yōu)良。服務(wù)端采用跨平臺(tái)編程語(yǔ)言Golang[1]進(jìn)行開發(fā),Web 接口遵循RESTFUL API 形式,性能優(yōu)越且在不同指令集的計(jì)算機(jī)上,如LoongArch(龍芯)、MIPS(龍芯)、ARM 系列(飛騰、英偉達(dá)等)、X86(Intel)等,且搭載不同的國(guó)產(chǎn)操作系統(tǒng),如:銀河麒麟、中標(biāo)麒麟[2]、UOS 等均可運(yùn)行。該平臺(tái)的最大優(yōu)勢(shì)是在不同操作系統(tǒng)上,僅須通過(guò)瀏覽器即可訪問(wèn)到數(shù)據(jù)管理平臺(tái),并對(duì)企業(yè)內(nèi)網(wǎng)中所有Linux 類計(jì)算機(jī)設(shè)備進(jìn)行監(jiān)控與管理,無(wú)須在客戶端搭建復(fù)雜的環(huán)境。將環(huán)境搭建工作交于服務(wù)端,而服務(wù)端在批量化生產(chǎn)時(shí)使用硬盤母盤便可實(shí)現(xiàn)批量化生產(chǎn)。從而客戶端無(wú)須搭建復(fù)雜的環(huán)境,從而最大程度方便用戶直接使用本平臺(tái)。即便是用戶臨時(shí)需要更換電腦進(jìn)行操作,只須將已存儲(chǔ)的數(shù)據(jù)以文本格式導(dǎo)出后再在新客戶端中導(dǎo)入即可,大大降低了客戶端的程序依賴。

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

        1.1 設(shè)計(jì)思路

        本系統(tǒng)客戶端設(shè)計(jì)核心是希望拋棄一切環(huán)境搭建,僅須使用Chrome類內(nèi)核瀏覽器便能訪問(wèn)到設(shè)備監(jiān)控平臺(tái)并對(duì)所有設(shè)備進(jìn)行可視化的監(jiān)控及遠(yuǎn)程管理?;诖?,本文在技術(shù)架構(gòu)上應(yīng)用采用B/S 架構(gòu)進(jìn)行開發(fā),客戶端部署在用戶瀏覽器,數(shù)據(jù)庫(kù)亦存儲(chǔ)在B 端中,直接使用html5新特性[3]中的localstorage 存儲(chǔ)到本地瀏覽器,且加入一鍵導(dǎo)入與導(dǎo)出功能。每一臺(tái)被管控的設(shè)備作為服務(wù)端,這樣一來(lái)客戶端的運(yùn)行環(huán)境將不需要被搭建,而服務(wù)端在大多數(shù)情況下亦只需要搭建一次環(huán)境。軟件以及Web terminal終端服務(wù)中間件可部署在中間服務(wù)器上,供多個(gè)客戶端同時(shí)使用。本文中所有服務(wù)端應(yīng)用均使用Golang語(yǔ)言開發(fā)、編譯,得益于Golang語(yǔ)言優(yōu)越的跨平臺(tái)性,編譯時(shí)便可指定平臺(tái)與指令集,可直接編譯為對(duì)應(yīng)平臺(tái)、指令集的二進(jìn)制文件,且無(wú)須搭建對(duì)應(yīng)系統(tǒng)環(huán)境。經(jīng)測(cè)試,在部署到國(guó)產(chǎn)操作系統(tǒng)過(guò)程中,無(wú)須額外搭建環(huán)境,即可直接運(yùn)行可執(zhí)行二進(jìn)制程序,總架構(gòu)圖如圖1所示。

        圖1 總框架圖

        使用Webterminal技術(shù)可實(shí)現(xiàn)網(wǎng)頁(yè)端執(zhí)行SSH,網(wǎng)頁(yè)輸入命令后通過(guò)WebSocket 技術(shù)傳輸?shù)絫erminal 服務(wù)端并通過(guò)中間服務(wù)端將對(duì)應(yīng)SSH 指令轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)器以實(shí)現(xiàn)WebSSH以方便用戶在客戶端使用。

        使用Websockify 將Linux VNC 服務(wù)端口(通常為5900 或5901)轉(zhuǎn)發(fā)到Web 開源框架noVNC 上,noVNC框架內(nèi)部通過(guò)WebSocket 與VNCServer 建立通信。從而實(shí)現(xiàn)用戶在瀏覽器中即可使用VNC,大大提高了用戶使用效率。

        1.2 客戶端Web設(shè)計(jì)

        客戶Web 端使用前后端分離開發(fā)思想,采用Vue3框架進(jìn)行開發(fā),使用Element UI作為視覺設(shè)計(jì)框架,使用百度Echarts繪圖插件進(jìn)行繪圖并實(shí)現(xiàn)數(shù)據(jù)儀表可視化。因服務(wù)端數(shù)據(jù)庫(kù)環(huán)境不一定可以確保搭建,因此數(shù)據(jù)持久化存儲(chǔ)的工作交由Web 端完成,本文研究中Web端使用H5新特性中的localstorage 技術(shù)將數(shù)據(jù)持久化存儲(chǔ)到瀏覽器內(nèi)部。而考慮到用戶可能會(huì)定期清除瀏覽器緩存以及可能需要將這些設(shè)備交由其他同事進(jìn)行后續(xù)管理等難題,設(shè)計(jì)了一套可以將數(shù)據(jù)導(dǎo)出的方案,具體方法是數(shù)據(jù)導(dǎo)出過(guò)程中使用JSON 作為標(biāo)準(zhǔn)格式導(dǎo)出為文本,當(dāng)用戶需要再次將數(shù)據(jù)導(dǎo)入時(shí),將文件上傳到Web 端后會(huì)通過(guò)JSON 解析器將數(shù)據(jù)還原并再次存儲(chǔ)至瀏覽器localstorage 中,其后瀏覽器自動(dòng)刷新并渲染界面。

        在Web 端中,為提高URL 路徑的可讀性,引入了Vue-router 插件,并使用H5 history 作為路由模式,配合Nginx偽靜態(tài)規(guī)則生效。其URL美觀且響應(yīng)速度優(yōu)越。在與后端通信方面,本文研究中高度封裝了fetch庫(kù),通過(guò)異步請(qǐng)求與Golang服務(wù)端進(jìn)行通信。Web端架構(gòu)圖如圖2所示,其中高度封裝fetch 直接與Golang服務(wù)端通過(guò)RESTFUL API約定格式進(jìn)行通信,常見請(qǐng)求方式包括GET/POST/DELETE/PUT 等。如向被控端上傳文件通過(guò)POST 方式請(qǐng)求進(jìn)行,使用GET 請(qǐng)求獲取設(shè)備當(dāng)前狀態(tài)信息、內(nèi)存信息等。

        圖2 Web端架構(gòu)圖

        1.3 被控服務(wù)端設(shè)計(jì)

        被控設(shè)備服務(wù)端采用跨平臺(tái)編譯型語(yǔ)言Golang進(jìn)行開發(fā),選用Golang的主要原因在于其跨平臺(tái)性好且編譯后性能優(yōu)越,無(wú)須依賴其他運(yùn)行環(huán)境,同時(shí)編譯后占用資源小,對(duì)計(jì)算平臺(tái)及嵌入式設(shè)備影響略微,同時(shí)相對(duì)于C、C++不需要將代碼移植到對(duì)應(yīng)平臺(tái)再次編譯,只需要將本機(jī)編譯到對(duì)應(yīng)平臺(tái)即可,極大地提升了開發(fā)效率以及降低了移植、開發(fā)成本。且Golang 擁有多個(gè)高度封裝的HTTP 庫(kù),數(shù)據(jù)庫(kù)處理方面有多個(gè)ORM操作模型,極其適用于Web后端開發(fā)。本文研究中采用Gin 框架部署HTTP 框架服務(wù),通過(guò)命令行參數(shù)綁定端口,出廠時(shí)可以通過(guò)寫開機(jī)啟動(dòng)命令啟動(dòng)程序,通過(guò)配置文件即可直接修改部署端口等信息,大大提高了程序的靈活配置性。

        由于本文所研究的設(shè)備管理主要為嵌入式設(shè)備,一般都搭載類Linux系統(tǒng),如國(guó)產(chǎn)銀河麒麟、中標(biāo)麒麟、UOS等。因此被控設(shè)備端中,Golang 開發(fā)的程序通過(guò)Linux系統(tǒng)調(diào)用獲取諸如CPU、內(nèi)存、磁盤等信息,同時(shí)通過(guò)Gin框架監(jiān)聽HTTP 80端口并對(duì)外暴露,將信息暴露到接口的同時(shí)監(jiān)聽開、關(guān)機(jī)等常規(guī)管理類操作。為了提高并發(fā)量,避免多個(gè)設(shè)備同時(shí)請(qǐng)求造成資源占用率過(guò)高,所有設(shè)備信息相關(guān)數(shù)據(jù)并不是請(qǐng)求接口時(shí)進(jìn)行更新,而是創(chuàng)建一個(gè)線程在一個(gè)周期事件內(nèi)進(jìn)行更新,如本文中所研究的應(yīng)用周期更新時(shí)間為10秒,當(dāng)訪問(wèn)接口時(shí),僅需要讀取存在內(nèi)存中的信息返回即可。為了保證數(shù)據(jù)的一致性,本文采用線程鎖保證數(shù)據(jù)可以同步被修改,保證不會(huì)出現(xiàn)上一次獲取的CPU數(shù)據(jù)可能與本次獲取的內(nèi)存信息同時(shí)返回給Web端。

        嵌入式服務(wù)端具體工作流程圖如圖3所示。

        圖3 嵌入式服務(wù)端流程圖

        1.4 代理VNC設(shè)計(jì)

        代理VNC[4]程序基于開源方案——noVNC進(jìn)行搭建,noVNC項(xiàng)目的目的是取消VNC client,直接通過(guò)瀏覽器訪問(wèn)VNC。其工作原理是通過(guò)由Websockify 來(lái)代理訪問(wèn)(基于Websocket)VNC server來(lái)達(dá)到client的Web 化,而Web 端與Websockify 的通信則采用Web-Socket 來(lái)實(shí)現(xiàn)。VNC server 配置仍需保留,并沒(méi)有修改。大多數(shù)國(guó)產(chǎn)化操作系統(tǒng)已包含VNC服務(wù)端,如果沒(méi)有VNC 客戶端可以在母盤中安裝一個(gè)類似于x11vnc 的工具便可實(shí)現(xiàn)遠(yuǎn)程化管理。代理VNC 處理的始終是TCP流量,因此只需在被控服務(wù)端額外運(yùn)行一個(gè)Websockify即可。

        但noVNC 原版方案提供的Websockify 由nodejs或Python 進(jìn)行開發(fā),均為解釋型語(yǔ)言,需要搭建對(duì)應(yīng)的編程語(yǔ)言環(huán)境才能得以運(yùn)行,而由于直接需要對(duì)系統(tǒng)本機(jī)進(jìn)行控制,因此不適用于采用docker解決該問(wèn)題,那么如需搭建環(huán)境則要安裝Python 或者nodejs 的開發(fā)環(huán)境。若被控端不能連接互聯(lián)網(wǎng),由于nodejs 與Python離線安裝庫(kù)非常煩瑣,因此這一流程將十分不便利,不利于程序的快速部署,因此與本文基本設(shè)計(jì)理念相悖。由此,本文研究并開發(fā)了一套基于Golang版本的Websockify。該版本W(wǎng)ebsockify的特點(diǎn)是可靜態(tài)編譯為Windows、Mac 以及Linux 版本,并且支持多種CPU 架構(gòu)的運(yùn)行,以便于程序的部署,而無(wú)須額外搭建對(duì)應(yīng)編程語(yǔ)言的環(huán)境,大大減少工作量并減少程序的不適應(yīng)性。同時(shí),Golang 支持多線程,從而使程序可以同時(shí)支持收與發(fā),且語(yǔ)法簡(jiǎn)單,性能優(yōu)良。本文所研究基于Golang 開發(fā)的跨平臺(tái)型Websockify 核心代碼如圖4所示。

        圖4 Websockify核心代碼

        1.5 Web terminal設(shè)計(jì)

        Web terminal的作用是用戶使用Web端即可直接連接到被控設(shè)備端SSH[5],主要用于通過(guò)SSH管理被控端。客戶端通過(guò)采用Vue 框架進(jìn)行單頁(yè)開發(fā)。使用Websocket 將用戶在Web 交互端輸入指令發(fā)送至Golang開發(fā)的SSH服務(wù)端,其服務(wù)端既部署于中間服務(wù)端抑或是目標(biāo)機(jī)器(需Linux內(nèi)核類操作系統(tǒng)),至于部署在何處取決于內(nèi)部網(wǎng)絡(luò)架構(gòu)的規(guī)劃。Web terminal服務(wù)端程序獲取到Web用戶傳輸來(lái)的SSH指令后通過(guò)系統(tǒng)調(diào)用的方式轉(zhuǎn)發(fā)至服務(wù)端所部署的服務(wù)器終端,終端使用SSH 與目標(biāo)主機(jī)相連通。連接成功后通過(guò)WebSocket實(shí)時(shí)監(jiān)聽客戶端輸入信息與被控端反饋信息(通過(guò)服務(wù)端SSH轉(zhuǎn)發(fā)),并實(shí)時(shí)進(jìn)行轉(zhuǎn)發(fā)操作和獲取SSH運(yùn)行結(jié)果。最后其結(jié)果再通過(guò)WebSocket將數(shù)據(jù)信息返回至Web客戶端。從而實(shí)現(xiàn)客戶端無(wú)須依賴本地環(huán)境便可連接被控端的終端服務(wù),并可實(shí)現(xiàn)操作。Web terminal數(shù)據(jù)流轉(zhuǎn)示意圖如圖5所示。

        圖5 Web terminal數(shù)據(jù)流轉(zhuǎn)圖

        2 系統(tǒng)設(shè)計(jì)成果

        2.1 客戶端界面展示

        在Web 客戶端界面,如果已添加過(guò)主機(jī),多臺(tái)主機(jī)的數(shù)據(jù)匯總報(bào)表會(huì)展示在儀表中心,該界面可通過(guò)圖表的方式直觀化地看見之前所有已添加的主機(jī)。該圖表系統(tǒng)會(huì)在后臺(tái)依次請(qǐng)求被添加的計(jì)算機(jī)從而統(tǒng)計(jì)所有在線主機(jī)的CPU、內(nèi)存等信息,同時(shí)求出總的CPU使用率、內(nèi)存使用率信息并通過(guò)計(jì)算后最終繪制成如圖6所示的圖表,直觀且較為美觀。

        圖6 儀表中心界面

        客戶端網(wǎng)頁(yè)對(duì)每一個(gè)服務(wù)器的單獨(dú)添加、刪除以及單獨(dú)控制方式如圖7所示。同時(shí)該界面可將所有服務(wù)器的連接數(shù)據(jù)進(jìn)行導(dǎo)出與導(dǎo)入,其導(dǎo)出流程如圖8所示,導(dǎo)入流程如圖9所示。導(dǎo)入過(guò)程中需要上傳之前導(dǎo)出的數(shù)據(jù),上傳磁盤上的數(shù)據(jù)后前端JS將會(huì)將數(shù)據(jù)從文本格式解析為JSON 格式,從而提取其中數(shù)組并覆蓋存儲(chǔ)至localstorage,因此會(huì)刪除之前已有數(shù)據(jù)。導(dǎo)出過(guò)程則會(huì)將localstorage 中的數(shù)據(jù)以JSON 格式轉(zhuǎn)化為文本格式,并以字符串的形式寫入DOM 文本標(biāo)簽中,最后通過(guò)js觸發(fā)瀏覽器下載文本文件至用戶本地磁盤。

        圖7 添加、刪除被控端界面

        圖8 導(dǎo)出流程

        圖9 導(dǎo)入剛剛導(dǎo)出的list.txt

        在被控服務(wù)端安裝VNCserver 后(本文中VNC server 使用x11vnc 作為演示),通過(guò)noVNC Web 端連接到被控服務(wù)端如圖10所示(基于國(guó)產(chǎn)優(yōu)麒麟操作系統(tǒng)),可流暢操作所有界面,且沒(méi)有出現(xiàn)卡頓現(xiàn)象。并且在客戶端無(wú)須安裝任何額外環(huán)境,用戶無(wú)須搭建額外的管理環(huán)境便可直接對(duì)所有嵌入式設(shè)備進(jìn)行管理。不過(guò)值得注意的是,在同一時(shí)間段內(nèi),僅允許一個(gè)用戶連接到VNC,這樣的目的是保證不被多個(gè)用戶同時(shí)操作導(dǎo)致出現(xiàn)不同步的情況。連接密碼為VNC server所設(shè)定的密碼,而非被控端自身賬號(hào)密碼。x11vnc 初始密碼默認(rèn)為空,因此無(wú)須輸入密碼,但是為了保證安全性,建議被控設(shè)備出廠時(shí)統(tǒng)一設(shè)定密碼。

        圖10 通過(guò)noVNC連接到被控服務(wù)端遠(yuǎn)程桌面

        2.2 被控服務(wù)端

        被控設(shè)備端僅需一條命令即可啟動(dòng):./可執(zhí)行文件名,如圖11所示,通過(guò)編譯為二進(jìn)制方式執(zhí)行,啟動(dòng)方式極其簡(jiǎn)潔且不需安裝額外環(huán)境。本圖中啟動(dòng)過(guò)程通過(guò)命令行參數(shù)指定了監(jiān)聽的端口為80,由于80端口的特殊性,需要提權(quán)到root 執(zhí)行程序以避免執(zhí)行權(quán)限不足的情況。

        圖11 被控設(shè)備端的啟動(dòng)

        考慮到被控設(shè)備端一般為嵌入式設(shè)備批量部署并應(yīng)用,因此可將本程序放置母盤指定位置,并在/etc/rc.d/rc.local 路徑將程序與命令行參數(shù)寫入從而實(shí)現(xiàn)被控服務(wù)端程序的自啟動(dòng)流程,同時(shí)可通過(guò)系統(tǒng)磁盤母盤將應(yīng)用與開機(jī)啟動(dòng)配置文件批量寫入與部署。

        3 結(jié)束語(yǔ)

        總的來(lái)說(shuō),本文設(shè)計(jì)的智能化設(shè)備監(jiān)控管理平臺(tái)通過(guò)使用母盤在嵌入式設(shè)備出廠時(shí)將程序刷入服務(wù)端的做法,減輕了服務(wù)端部署環(huán)境的工作量,同時(shí)客戶端也僅需使用瀏覽器即可監(jiān)控與管理被控嵌入式設(shè)備。得益于瀏覽器H5的local storage特性將數(shù)據(jù)可持久化存儲(chǔ)至用戶設(shè)備中,并提供下載成文件的功能方便用戶導(dǎo)入與導(dǎo)出,大大提高了用戶管理的便利性與管理效率。同時(shí)通過(guò)Golang 作為服務(wù)端遠(yuǎn)程轉(zhuǎn)發(fā)來(lái)自瀏覽器與其建立的WebSocket 中的SSH 信息,可在瀏覽器中直接使用SSH 命令行。除此之外,通過(guò)noVNC框架思想實(shí)現(xiàn)了在瀏覽器中可通過(guò)vnc遠(yuǎn)程控制被控端設(shè)備,極大地提高了客戶端對(duì)被控端的管理能力??偟膩?lái)說(shuō)該系統(tǒng)的設(shè)計(jì)與應(yīng)用為未來(lái)嵌入式設(shè)備的批量監(jiān)控與管理提供了一個(gè)優(yōu)秀的思路與開發(fā)設(shè)計(jì)理念。

        猜你喜歡
        嵌入式環(huán)境用戶
        長(zhǎng)期鍛煉創(chuàng)造體內(nèi)抑癌環(huán)境
        一種用于自主學(xué)習(xí)的虛擬仿真環(huán)境
        孕期遠(yuǎn)離容易致畸的環(huán)境
        環(huán)境
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        欧美噜噜久久久xxx| 男人边吻奶边挵进去视频| 国产精品va在线观看无码| 久久艹影院| 亚洲人成网站18男男| 亚洲视频在线视频在线视频| 日韩有码在线免费视频| 久久亚洲av成人无码国产最大| 欧美老熟妇喷水| 欧美丰满大爆乳波霸奶水多| 手机色在线| 99麻豆久久精品一区二区| 亚洲久悠悠色悠在线播放| 亚洲av无码国产精品色午夜字幕| 欧美一区二区三区红桃小说| 国产亚洲欧美日韩综合综合二区 | 人妻少妇精品视中文字幕国语| 一级呦女专区毛片| 玩弄丝袜美腿超短裙校花| 国产三级黄色大片在线免费看| 麻豆av一区二区三区| 天天摸日日摸狠狠添| 亚洲欧美中文在线观看4| 精品少妇白浆一二三区| 红桃av一区二区三区在线无码av| 久久人人爽人人爽人人av| 99久久国产视频| 日本激情一区二区三区| 中文字幕免费人成在线网站| 国产成人无码综合亚洲日韩| 色综合无码av网站| 超高清丝袜美腿视频在线| 国产一区二区视频免费| 欧洲美女黑人粗性暴交视频 | 四房播播在线电影| 亚洲成AV人久久| 亚洲不卡一区二区视频| 中文字幕亚洲无线码一区女同| 国产亚洲视频在线观看网址| 久久夜色精品国产亚洲噜噜| 日本一区二区三区爱爱视频|