售後打電話說現場設備出問題了,嵌入式工程師最想幹什麼?

售後打電話說現場設備出問題了,嵌入式工程師最想幹什麼?

當然不是罵售後,儘管有時是這麼想的!作爲嵌入式系統開發人員,我最想做的就是能夠能通過telnet或者ssh登錄到設備上,看看設備系統還正常不正常,查看程序日誌,看看程序TMD到底幹什麼去了!做軟件的同學都知道,軟件出問題,一定要保留現場,這樣才容易查問題,特別是那種偶現的問題,現場以破壞,下次不知道什麼時候出現了。下面給大家介紹下之前做過的一套嵌入式系統遠程調試運維的軟件。

 

嵌入式系統運維概述

提起運維,大家想到的可能都是服務器運維,各種linux服務器、windows服務器、交換機路由器配置、防火牆配置……不過,我這裏所說的是嵌入式系統設備的運維,這個概念現在提的應該不多。這個也是最近幾年,隨着嵌入式(linux)設備的發展,使用不斷增加而出現的,設備的量越來越大,特別是現在物聯網爆發式增長,各行各業都會用到嵌入式系統,而這些設備,大部分都是用的嵌入式linux系統。

必要性

設備的量上去了,設備的運維問題也就是暴露出來了,設備一般使用現場偏遠,有的是車載設備,隨車滿地跑,所以,維護起來並不像那些固定的服務器那樣容易,這也就產生了嵌入式設備遠程運維的概念。這裏所說的遠程運維,即是指可以像本地操作設備一樣去操作與控制遠程現場的嵌入式設備。

如果在物聯網行業,一般嵌入式系統作爲網關的形式存在,這樣的話單個客戶的用量並不會大,一般在10臺以內的數量級,所以如果設備出了問題,一般還需要派人去現場,這樣必然會增加額外的差旅費用。如果是車載設備,一般量就比較大了,一個地區可能會有成千上萬臺設備,這樣就更需要建設遠程運維繫統了。

設計原則

作爲遠程運維程序,需要做的非常穩定,怎麼才能儘可能穩定,不出bug?我們會將運維程序與正式的程序分開,並且運維程序在設備上做的儘可能簡單,因爲只有簡單了,才能夠穩定。這樣也保證運維模塊程序不受其他應用程序的影響。

如下圖所示:

這裏的運維平臺用戶對象主要是開發人員,開發人員在設備出問題時,通過運維平臺可以遠程登錄到設備上面,可以查日誌、下載日誌、查看數據、查看系統狀態等等。

實現思路

組成模塊

和常規的平臺通信類似,這裏以典型的C/S架構爲例(原來做的是C/S架構,當然也可以用B/S架構),需要三部分組成:

1.嵌入式設備程序

2.平臺服務程序

3.客戶端程序

嵌入式端平臺服務器端需要制定一套簡單的協議,包括設備註冊、心跳維持、ssh/telnet代理等,平臺服務端會將註冊上來的設備統一管理,可以分組織,以把不同地區、不同客戶的設備分開,便於維護。客戶端與平臺服務端也有一套協議,主要是用於獲取設備列表信息,還有ssh與telnet代理。

關鍵技術-遠程登錄

這裏提到了ssh/telnet代理,大家可能都比較熟悉ssh和telnet,通常用於遠程登錄系統。像這種遠程系統裏,由於需要跨公網,並不能直接連接到設備,所以需要在平臺服務端做ssh或者telnet的代理。這兩種方式我們都用過,telnet是明文傳輸,存在安全問題;還有一點不能傳輸文件,ssh可以傳輸文件,也可以在xshell的登錄終端直接利用xmodem協議傳輸文件。雖然說可以通過ftp服務傳文件,但是在登錄終端直接傳輸文件還是很方便的操作。

使用rz命令給設備下載文件,可以下載升級文件,下載配置文件等等,使用sz可以把設備的日誌文件、數據發配置等送到自己的電腦上面。這樣是不是很方便!

 

微信公衆號:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章