曾愛斌
(中海油信息科技有限公司,廣東 深圳 518000 )
隨著信息化的深入發(fā)展,企業(yè)積累了大量的信息系統(tǒng)和設(shè)備,如何對這些系統(tǒng)進(jìn)行運維,使其實現(xiàn)效益最大化的目標(biāo)就成為相關(guān)工作的重點。目前,國內(nèi)大多數(shù)企業(yè)主要通過運維人員面對面或者遠(yuǎn)程訪問服務(wù)器開展針對信息系統(tǒng)的運維工作,然而該方法較為原始且易出現(xiàn)人為誤差。如果沒有網(wǎng)絡(luò)設(shè)備統(tǒng)一管理狀態(tài),就需要網(wǎng)絡(luò)管理人員手動查看,不僅會增加工作量,而且還會引發(fā)過度浪費人力資源的問題[1]。綜上所述,該文以自動化運維技術(shù)的作用、分類以及應(yīng)用為核心,通過技術(shù)、應(yīng)用和編寫對Python自動化運維進(jìn)行全面分析,從而實現(xiàn)有效提升工作效率、信息檢索效率和用戶網(wǎng)絡(luò)安全效率等目標(biāo)。該文希望通過Python自動化運維技術(shù)為提升各方面的效率提供新的途徑和科學(xué)依據(jù)[2]。
Python是目前已經(jīng)被全世界廣泛使用的一種解釋型、高級和通用的編程語言,它支持多種編程泛型,例如函數(shù)式、指令式以及反射式等。Python最早開始于20世紀(jì)80年代,是ABC語言的迭代產(chǎn)品,具有簡單易學(xué)、運行速度快以及跨平臺等特點。從21世紀(jì)開始,Python憑借自身的特色和優(yōu)勢呈現(xiàn)逐年遞增的發(fā)展趨勢,已被廣泛用于許多行業(yè)和領(lǐng)域中。在第三方庫的支持下(尤其許多優(yōu)秀的運維相關(guān)組件),Python可以在企業(yè)信息系自動化運維方面發(fā)揮重要作用。
Python作為新的編程語言,雖然已經(jīng)被廣泛應(yīng)用,但是該編程語言優(yōu)、缺點并存,下面將具體介紹Python語言的優(yōu)、缺點及發(fā)展現(xiàn)狀。
Python具有以下3個優(yōu)點:1) 語法比傳統(tǒng)編程語言簡單。與傳統(tǒng)C/C++、Java以及C#等編程語言相比,Python對代碼格式的要求低,還具備簡單、免費、兼容性強(qiáng)、用途廣泛以及易學(xué)習(xí)等特點,因此在學(xué)習(xí)、操作和應(yīng)用過程中無須用戶花費太多精力。2) 免費開源。開源意味源代碼是開放式的,所有用戶不需要支付任何費用就可以查看、修改以及使用源代碼,也無須擔(dān)心版權(quán)問題。3) 可擴(kuò)展性強(qiáng)。Python語言擁有豐富的模塊,覆蓋了文件I/O、GUI、網(wǎng)絡(luò)編程、數(shù)據(jù)庫訪問以及文本操作等大部分應(yīng)用場景[3]。
Python具有以下2個缺點:1) 運行速度慢。解釋型語言的通病之一就是運行速度慢,一方面是因為它在運行的同時也在翻譯 “源代碼”;另一方面,Python作為高級語言,屏蔽了許多底層細(xì)節(jié),因此工作時會消耗大量資源。2) 代碼加密困難。Python運行程序不是將源代碼編譯成可執(zhí)行的程序,而是直接運行源代碼,因此存在源碼加密困難的問題。
經(jīng)過不斷發(fā)展,Python的排名已由2020年的第三升至2021年的第一(表1),這表明Python作為新的編程語言已經(jīng)超越傳統(tǒng)語言(呈上升趨勢),而傳統(tǒng)的C/C++、Java以及C++等語言的排名呈下降的趨勢。
表1 Python在TIOBE榜單的排名
首先,與其他程序語言相比,Python語言變化率低、增長率高(同比最高),為2000—2021年間各大編程語言的最優(yōu)發(fā)展趨勢(見表1)。其次,Python的語法不僅簡潔,而且在強(qiáng)大的第三方程序庫的支持下,其已被應(yīng)用到各領(lǐng)域中,是目前的主流編程語言之一[4]。
自動化運維是通過運維工具或平臺實現(xiàn)IT基礎(chǔ)設(shè)施及業(yè)務(wù)應(yīng)用日常任務(wù)處理和運維流程的自動化,以期提高效率、降低風(fēng)險,并促進(jìn)運維組織的成熟和各種能力的升級。網(wǎng)絡(luò)自動化運維內(nèi)容主要包括日常任務(wù)處理、運維流程以及能力升級,具體情況如圖1所示。
自動化運維并不是孤立地建設(shè)和運行,需要“自動化”、“配置管理”以及“監(jiān)控”三者相輔相成,即三者之間既相互獨立又相互聯(lián)系,最好的方法是共同建設(shè)、共同迭代。
自動化運維分為面向基礎(chǔ)架構(gòu)的自動化、面向應(yīng)用的自動化以及面向業(yè)務(wù)的自動化。而面向基礎(chǔ)架構(gòu)的自動化主要指基礎(chǔ)設(shè)施即服務(wù)(IASS)和平臺即服務(wù)(PAAS),這個類別的自動化建設(shè)目標(biāo)是降低運維人員的工作量。面向應(yīng)用的自動化的對象以類(類指模板,一個模板中存在多個函數(shù)供使用)和對象(調(diào)用被包裝在內(nèi)的函數(shù))為單位,應(yīng)用中包括各類基礎(chǔ)架構(gòu)資源。面向業(yè)務(wù)的自動化是IT自動化的最終目標(biāo),歸根結(jié)底是為IT服務(wù)。
圖1 網(wǎng)絡(luò)自動化運維圖
自動化運維的作用如下:1) 提高運維效率。手動開展運維工作會消耗大量的勞力及財力。自動化運維可以實現(xiàn)批量操作的目標(biāo),從而顯著地提高效率和水平。2) 減少錯誤。即使最謹(jǐn)慎的人也會犯錯,尤其是面對重復(fù)的工作。通過運維自動化工具來完成相關(guān)工作可以降低錯誤率。3) 減少財務(wù)支出,效率最大化。運維專家們可以通過運維自動化將精力集中在更復(fù)雜、更有戰(zhàn)略意義的業(yè)務(wù)問題。通過自動化可以減少員工數(shù)量和財務(wù)支出,實現(xiàn)效率最大化的目標(biāo)。4) 提高滿意度。自動化運維工具幫助IT運維高效支持業(yè)務(wù)發(fā)展,為內(nèi)部和外部客戶提供高水平支持。5) 顯著降低成本。當(dāng)出現(xiàn)系統(tǒng)中斷、人為錯誤以及重復(fù)工作等情況時,會付出高昂的費用和代價,而自動化運維可以有效地降低相關(guān)成本。
在https://www.Python.org/downloads/ 下載適合系統(tǒng)的Python,在軟件安裝完畢后,需要修改環(huán)境變量。具體步驟為在 “系統(tǒng)變量”PATH路徑下添加“C:Python27”
在https://pypi.Python.org/pypi/psutil 下載適合系統(tǒng)的psutil。在安裝前,需要先注冊Python2.7,否則會報錯。因此,該文先對腳本register.py進(jìn)行編輯注冊,詳細(xì)代碼如下。
要監(jiān)控腳本在其他Windows 上的運行情況,就需要安裝Python環(huán)境,可以將監(jiān)控腳本打包成exe程序發(fā)布,當(dāng)需要運行該P(yáng)ython腳本時,通過單擊腳本exe程序就可以使用程序內(nèi)置代碼、函數(shù)信息執(zhí)行計算數(shù)據(jù)的任務(wù)。
首先,安裝打包程序py2exe-0.6.9.win32-py2.7.exe。在網(wǎng)頁(http://sourceforge.net/)中找到相應(yīng)的版本下載打包程序,下載后直接安裝即可。
其次,編寫一個簡單的編譯腳本,腳本如下。
setup_py2exe.py
from distutils.core import setup
Import py2exe
Setup(console=[“monitor.py"])
再次,打包 。進(jìn)入命令行窗口,在setup_py2exe.py所在的目錄運行Python setup_py2exe.py py2exe。運行后會在當(dāng)前目錄生成2個文件夾(build和disk),不需要關(guān)注build文件夾,只需要重點關(guān)注dist文件夾,dist文件夾里面會產(chǎn)生monitor.exe及其他文件,而monitor.exe就是所需要運行的exe程序,如果要運行相關(guān)腳本內(nèi)容、獲取內(nèi)容,那么僅需要對dist文件夾發(fā)布的內(nèi)容進(jìn)行讀取、解譯。將dist文件夾發(fā)布到其他Windows機(jī)器后,直接運行monitor.exe有可能會報錯“由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動”。這是因為py2exe打包的程序需要9.0.21022.8版本的MSVCR90.DLL,可以從網(wǎng)上下載并將其放到dist目錄下一起發(fā)布。另外,除了9.0.21022.8版本的MSVCR90.DLL外,還需要將Microsoft.VC90.CRT.manifest文件放在dist目錄下。
其中,該文相關(guān)Microsoft.VC90.CRT.manifest腳本代碼如下。
<assembly xmlns="urn:schemas microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable> </noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8"
processorArchitecture="x86" publicKeyToken="1fc8b3b9 a1e18e3b"></assemblyIdentity>
<file name="msvcr90.d11" />
</assembly>
最后,完成上述操作后,再次將dist目錄發(fā)布到其他Windows服務(wù)器上,當(dāng)需要通過monitor.exe程序進(jìn)行操作時,須進(jìn)入dist目錄,通過運行相關(guān)monitor.exe程序完成計算內(nèi)容。
經(jīng)過不斷發(fā)展,Python在第三方庫及各程序員的幫助下,已經(jīng)成為目前最受歡迎的編程語言之一。 Python具有簡單、靈活以及功能強(qiáng)大等優(yōu)勢,已經(jīng)成功應(yīng)用到運維領(lǐng)域。該文通過讀取磁盤利用率案例對網(wǎng)絡(luò)自動化運維進(jìn)行介紹。而在實際工作中,運維者可以根據(jù)自己的需求以及對未來網(wǎng)絡(luò)的自動化運維場景的應(yīng)用需求開發(fā)更多的運維工具。借助Python語言打造服務(wù)于網(wǎng)絡(luò)運維的Python網(wǎng)絡(luò)自動化運維技術(shù),擺脫技術(shù)對網(wǎng)絡(luò)自動化運維的限制,從而提高網(wǎng)絡(luò)自動化運維技術(shù)。