胡曉明
(合肥職業(yè)技術(shù)學(xué)院,安徽合肥,230013)
數(shù)字化時代,需要以數(shù)據(jù)為核心進(jìn)行商業(yè)邏輯的重構(gòu)。這包括兩個方面,一是重構(gòu)新價值,同時創(chuàng)造新模式。為顧客創(chuàng)造新價值的同時創(chuàng)造新模式,這個新價值新模式就是如何離消費(fèi)者更近,如何更高效響應(yīng)消費(fèi)者,提供差異化的服務(wù),提高效率,降低成本,同時有更多的資源投入新產(chǎn)品的研發(fā)。
企業(yè)數(shù)字化轉(zhuǎn)型的主要目標(biāo),是通過對企業(yè)全面、系統(tǒng)的數(shù)字化重塑,來實現(xiàn)企業(yè)的智慧化升級,將企業(yè)打造成為面向未來的智慧企業(yè),而數(shù)字化轉(zhuǎn)型,則是打造智慧企業(yè)的主要手段和核心路徑。向“數(shù)字”要“效率”,是企業(yè)業(yè)務(wù)重塑的必然選擇。數(shù)字化首先讓目標(biāo)變得可度量,可度量就可不斷優(yōu)化,結(jié)果是提高生產(chǎn)制造、供需匹配、維保服務(wù)的效率,最終可以降低經(jīng)營成本,提高企業(yè)競爭力。
隨著企業(yè)信息化的不斷升級,企業(yè)面臨的IT系統(tǒng)壓力越來越大,IT運(yùn)維更是成為企業(yè)一大負(fù)擔(dān)。IT業(yè)務(wù)不斷升級,對IT運(yùn)維的要求也日漸提升。隨著競爭的加劇,越來越多的企業(yè)開始壓縮運(yùn)營成本,降低信息化的投入也就成了重要舉措,因為市場變化快,導(dǎo)致企業(yè)對產(chǎn)品上線時間的要求越來越,大型企業(yè)的信息化更加滲透到企業(yè)的方方面面,由此對IT系統(tǒng)本身的精細(xì)化管理要求更高,IT運(yùn)維不再是提供單一的設(shè)備維修,而要為企業(yè)帶來更加智能、高效并且安全的整個IT系統(tǒng)的優(yōu)化與維護(hù)。
信息技術(shù)運(yùn)營(通常稱為IT運(yùn)營或 ITOps)是成功企業(yè)最重要的組成部分之一。IT運(yùn)營包括內(nèi)部和外部客戶的管理流程和硬件和軟件支持。有效的IT運(yùn)營管理可確保組織流程和服務(wù)的可用性、效率和性能。IT部門面對不斷增長的異構(gòu)IT 基礎(chǔ)設(shè)施和應(yīng)用,需要借助更好的自動化工具、監(jiān)控工具及日志工具等來提升效率,保障質(zhì)量。
推動企業(yè)數(shù)字化轉(zhuǎn)型,包括業(yè)務(wù)數(shù)字化、流程工具化、數(shù)據(jù)業(yè)務(wù)化等,這就對企業(yè)IT運(yùn)維提出了新需求,新挑戰(zhàn)。這其中一個重要需求和挑戰(zhàn)就是面對復(fù)雜的混合云生產(chǎn)環(huán)境如何提高企業(yè)運(yùn)維的自動化水平和加強(qiáng)運(yùn)維人員的之間的協(xié)作,這樣才能提高在企業(yè)運(yùn)維中對于突發(fā)事件的響應(yīng)速度,為企業(yè)的生產(chǎn)經(jīng)營更好服務(wù)。
ChatOps代表基于聊天的操作,是一種協(xié)作模型,通過聊天平臺和專業(yè)聊天機(jī)器人的廣泛使用,以無縫和透明的方式將人員、流程、工具和自動化連接起來。使用ChatOps,所有技術(shù)團(tuán)隊成員可以在同一個虛擬位置一起工作,通過使用他們熟悉的聊天平臺查看和共享相同的信息。團(tuán)隊成員在訪問必要的工具時,可以從使用機(jī)器人或其他集成的聊天工具中訪問這些工具,而不需要他們打開專用的應(yīng)用程序窗口或控制臺。
圖1 ChatOps 運(yùn)維社交平臺參與主體圖
在一個運(yùn)維協(xié)作社交平臺,一般會包含四部分的參與主體。這四部分分別是運(yùn)維人員,社交平臺,機(jī)器人平臺和工具平臺。
運(yùn)維人員通過社交平臺進(jìn)行和機(jī)器人平臺進(jìn)行信息交互,機(jī)器人平臺會根據(jù)運(yùn)維人員輸入的信息進(jìn)行匹配和比較,然后發(fā)送相應(yīng)的請求給工具平臺,同時接收來自工具平臺的返回結(jié)果,并通過社交平臺展示給運(yùn)維人員。這樣所有運(yùn)維人員使用同一個場所就可以獲取遠(yuǎn)程的基礎(chǔ)設(shè)施信息而不需要脫離當(dāng)前控制臺,這樣大大提高了IT運(yùn)維對熱點(diǎn)事件的處理速度。
Node.js作為異步事件驅(qū)動的 JavaScript 運(yùn)行時環(huán)境,是一個基于Chrome JavaScript 運(yùn)行時建立的一個平臺,它旨在構(gòu)建可擴(kuò)展的網(wǎng)絡(luò)應(yīng)用程序。Node.js 的包管理器是npm。通過npm 可以安裝、共享、分發(fā)代碼,管理項目依賴關(guān)系。
Hubot 是在 Node.js 上用 CoffeeScript 編寫的開源包,并且可以輕松部署在多種云平臺上,與多種社交平臺進(jìn)行集成。更重要的是,Hubot 是一種標(biāo)準(zhǔn)化的方式,可以在每個人的機(jī)器人之間共享腳本。Hubot 是企業(yè)運(yùn)維人員友好的機(jī)器人助手。將它集成到企業(yè)的運(yùn)維平臺,可以顯著提高員工效率。
在Hubot中,機(jī)器人提供了多種對消息的處理方式,如圖2所示。
圖2 Hubot 消息處理功能圖
Robot.hear:監(jiān)聽任何匹配的輸入信息。即在聊天過程中,只要匹配到特定的消息,就會觸發(fā)回調(diào)函數(shù)。
Robot.respond :監(jiān)聽只針對Hubot 說的輸入信息。即在聊天過程中,只要匹配到對Hubot的特定消息,然后觸發(fā)回調(diào)函數(shù)。
Robot.listen:自由度最高的監(jiān)聽器,傳入一個匹配函數(shù)(Match Function)對消息進(jìn)行匹配。該函數(shù)返回true時回調(diào)函數(shù)會被執(zhí)行。
Robot.http:Hubot 自帶一個 node-scoped-httpclient 來發(fā) http 請求。
Robot.router:Hubot提供事件路由功能,可以根據(jù)不同的信息,觸發(fā)不同的事件路由。
基于Hubot的機(jī)器人協(xié)作平臺由三層構(gòu)成,分別是:工具層、控制層和交互層。
工具層主要對各種IT運(yùn)維中各種基礎(chǔ)設(shè)施的信息獲取,包括對各種IT系統(tǒng)的日志,指標(biāo)通過工具進(jìn)行獲取。比如通過Shell腳本,或者Ansible的playbook對各種系統(tǒng)信息進(jìn)行及時獲取。這個工具層可以根據(jù)需要進(jìn)行擴(kuò)展,針對不同的任務(wù)添加不同的工具。
控制層位于中間部分,包括兩個模塊,模塊一是Co mmand Controller,主要負(fù)責(zé)HUBOT機(jī)器人和工具層的通信,該模塊負(fù)責(zé)解析相關(guān)的命令和參數(shù),同時把命令調(diào)用請求傳遞給工具層,然后把工具層執(zhí)行的結(jié)果返回給Hubot。該模塊可以重用已經(jīng)有的Node.js庫來實現(xiàn),也可以根據(jù)需要直接使用NPM包。模塊二是Chattool Adapter,是Hubot同各種聊天平臺進(jìn)行交互的適配器。它主要負(fù)責(zé)把社交聊天平臺的信息傳遞給Hubot機(jī)器人,然后機(jī)器人把相應(yīng)的信息傳遞給模塊Command Controller. 該模塊也負(fù)責(zé)把命令執(zhí)行結(jié)果反饋到聊天協(xié)作平臺中去,以方便IT運(yùn)維人員共享信息,為快速解決問題提供保證。該模塊主要使用各個聊天平臺提供的軟件開發(fā)包(SDK)來實現(xiàn)。
最上層的交互層,負(fù)責(zé)接受運(yùn)維人員的信息輸入,同時展示控制層返回的命令執(zhí)行結(jié)果,起到信息共享的作用。該層需要根據(jù)企業(yè)運(yùn)維業(yè)務(wù)的不同而進(jìn)行自行開發(fā)定制。
圖3 系統(tǒng)總體架構(gòu)圖
在我們的運(yùn)維協(xié)作社交平臺中,一個完整的流程從運(yùn)維人員響應(yīng)系統(tǒng)事件開始,運(yùn)維人員需要獲取相關(guān)系統(tǒng)事件的具體信息,這時該人員輸入獲取運(yùn)行IT系統(tǒng)信息到社交平臺(比如Slack),運(yùn)維社交平臺中的機(jī)器人會捕獲相關(guān)命令信息,經(jīng)過社交平臺機(jī)器人的處理,然后調(diào)用遠(yuǎn)程系統(tǒng)的工具集,如Shell 腳本和Ansible的playbook,然后反饋遠(yuǎn)端的系統(tǒng)信息到社交平臺,最后利用運(yùn)維社交平臺對返回結(jié)果進(jìn)行可視化處理,最終展示給所有事件處理參與者。如圖4所示。
圖4 運(yùn)維社交平臺協(xié)作流程圖
在這樣的運(yùn)維社交平臺里,運(yùn)維人員可以有多種方式進(jìn)行交互。最常用的交互方式通過@符號輸入命令行的方式。當(dāng)每個人需要查詢遠(yuǎn)程資源的狀態(tài)或者讓遠(yuǎn)端系統(tǒng)執(zhí)行相應(yīng)的命令時,可以采用這樣的方式。第二種方式是通過利用鼠標(biāo)對返回的結(jié)果進(jìn)行選擇操作,這樣可以提供響應(yīng)效率。另外就是可以對返回的結(jié)果進(jìn)行超級鏈接標(biāo)注,這樣可以實現(xiàn)跨應(yīng)用的快速切換。
我們選擇Slack作為我們的社交平臺,選擇redhat Linux8.x作為Hubot機(jī)器人平臺進(jìn)行配置,另外選取多臺其他Linux平臺作為運(yùn)維測試系統(tǒng)來搭建我們的環(huán)境。在Slack中集成Hubot機(jī)器人來構(gòu)建我們的運(yùn)維協(xié)作社交平臺,同時在協(xié)作平臺中,我們通過robot.listen實現(xiàn)了對不同命令進(jìn)行監(jiān)聽和處理,并且通過使用中間件hubotscirpt-shellcmd,實現(xiàn)了對遠(yuǎn)程運(yùn)維工具集的調(diào)用和結(jié)果的返回處理。進(jìn)一步我們通過在工具層集成Ansible來提供更強(qiáng)大的自動化能力,實現(xiàn)了我們對多種云環(huán)境信息的監(jiān)控和獲取。
下面是在Hubot中實現(xiàn)監(jiān)聽并匹配輸入信息的例子,當(dāng)系統(tǒng)名稱匹配時,就調(diào)用相應(yīng)的功能返回不同的信息,或者我們可以擴(kuò)展該功能去執(zhí)行命令并獲取信息:
在調(diào)用命令之前,需要通過如下配置步驟,以便可以在Hubot中讓機(jī)器人可以交互式地實現(xiàn)命令的調(diào)用。為了方案驗證的方便快捷,我們直接使用了一個已有Hubot插件來進(jìn)行命令行處理。在實際的項目工作中,我們需要自己實現(xiàn)該功能,比如通過Node.js提供的子進(jìn)程模塊child_process,這樣可以增加我們控制的靈活性。
步驟1:安裝Hubot, 請參考Hubot安裝配置手冊
步驟2:在Slack中集成Hubot機(jī)器人,請參考我們的參考文檔[2]。Hubot機(jī)器人和Slack之間的通信通過Token來實現(xiàn)。
步驟3:配置hubot-script-shellcmd模塊
步驟4:單獨(dú)把shellcmds 模塊分割開來,以便我們把所有腳本都集中到相應(yīng)的Bash目錄下cp -R node_modules/hubot-script-shellcmd/bash .
步驟5:增加模塊hubot-scirpt-shellcmd到配置文件external-scripts.json中
步驟6:安裝配置Ansible, 以便運(yùn)維人員可以從社交平臺調(diào)用相關(guān)自動化命令進(jìn)行系統(tǒng)監(jiān)控
步驟7:實現(xiàn)各種監(jiān)控腳本,并放到
最后我們獲得了一個IT運(yùn)維人員通過社交平臺協(xié)作交互的結(jié)果。如圖5所示。
圖5 機(jī)器人運(yùn)維交互圖
運(yùn)維人員可以通過繼續(xù)運(yùn)行相應(yīng)的命令來獲得遠(yuǎn)端機(jī)器的信息。如圖6所示。在這樣的環(huán)境里,你可以添加更多腳本來獲取遠(yuǎn)程機(jī)器的信息。當(dāng)遇到運(yùn)維問題時,相關(guān)人員都可以加入這個頻道來進(jìn)行問題的協(xié)作解決,從而提高了問題解決的響應(yīng)時間,提高了工作效率。由于社交平臺不僅提供桌面客戶端,同時也支持移動客戶端,這樣就使得運(yùn)維人員之間的協(xié)作空間和協(xié)作效率進(jìn)一步擴(kuò)展,為熱點(diǎn)事件的解決提供了快速通道。
圖6 機(jī)器人運(yùn)維獲取遠(yuǎn)端機(jī)器信息結(jié)果圖
基于Hubot開源機(jī)器人技術(shù)的IT運(yùn)維交互平臺可以增強(qiáng)運(yùn)維人員的協(xié)作性,提高IT運(yùn)維人員的工作效率。平臺構(gòu)建為企業(yè)數(shù)字化轉(zhuǎn)型過程中,IT運(yùn)維對熱點(diǎn)事件的快速協(xié)作響應(yīng)提供了一種可行解決方案。后續(xù)將進(jìn)一步探索在Hubot平臺上如何增加更加豐富的交互方式和更強(qiáng)大自動化能力的結(jié)合,進(jìn)一步完善運(yùn)維交互協(xié)作平臺,提升企業(yè)運(yùn)維對關(guān)鍵事件的響應(yīng)效率,促進(jìn)企業(yè)數(shù)字化轉(zhuǎn)型升級。