Datacom知識點解析:自動化運維

華為認證
宇信教育 宮兆豐
自動化運維,顧名思義就是將繁瑣的人工運維轉化為使用腳本或平臺實現(xiàn)批量化、自動化的工作。自動化運維可以減輕工程師的負擔,同時也可以降低人工運維誤操作的概率。

自動化運維,顧名思義就是將繁瑣的人工運維轉化為使用腳本或平臺實現(xiàn)批量化、自動化的工作。自動化運維可以減輕工程師的負擔,同時也可以降低人工運維誤操作的概率。

自動化運維在日常的運維工作中隨處可見,例如在學校的機房里,可以通過自動化運維的方式給試驗機安裝教學用軟件,批量安裝操作系統(tǒng)等。在服務器運維時可以通過自動化運維的方式部署一些中間件和所需的服務,在網絡運維中可以通過自動化運維實現(xiàn)設備批量管理等。自動化運維基本可以分為自動化運維平臺和腳本兩種方式,其中自動化運維平臺常用的有Ansible、Zabbix等。運維腳本在Windows系統(tǒng)中可以使用批處理(Batch)腳本的方式實現(xiàn),Linux中可以使用Shell腳本的方式實現(xiàn),如果有跨平臺需求的話還可以使用Python腳本來實現(xiàn)一些功能。

自動化運維平臺Zabbix的使用可以說很常見,該平臺可以通過SNMP協(xié)議等方式提供對遠程服務器或網絡狀態(tài)的監(jiān)視、數(shù)據(jù)收集等功能。同時Zabbix也支持腳本的調用,例如在服務器中出現(xiàn)一條HTTP的告警,這時就可以通過Zabbix下發(fā)指令來執(zhí)行后續(xù)的一些操作,這里的后續(xù)操作可以是一個Python腳本,也可以是一個Shell腳本。同時Zabbix也提供API接口,工程師可以自建平臺來進行對接,起到錦上添花的作用。但Zabbix也有一些缺點,比如它的繪圖功能就是一個弱點,在日常運維中想要在一個頁面中看到內存、磁盤、CPU、網絡的使用情況,Zabbix只能單獨的查看,需要看哪個參數(shù)就要去選擇相應的頁面,使用起來較繁瑣,如下圖所示。

1.webp.jpg

相應的解決方法就是可以接入一個Grafana來優(yōu)化這方面,Grafana是一個跨平臺的開源的可視化分析工具,Grafana的圖表可以支持自定義的功能,可以實現(xiàn)很多的監(jiān)控計算。

接入Grafana之后的監(jiān)控頁面可以定制化為下圖。

2.webp.jpg

Ansible是一個由Python語言編寫的,輕量級模塊化的運維工具,這就意味著如果工程師對Python比較了解,就可以根據(jù)自己的需求來編寫模塊。模塊是Ansible最小的運行單位,Ansible在部署時,無需在遠程服務器上安裝代理。通常的架構是一臺主控機和若干臺受控機,在工作時,由主控機下發(fā)指令至受控機執(zhí)行。

3.png

如果需要執(zhí)行的命令較多,可以通過編寫Shell腳本的方式來執(zhí)行。同時Ansible眾多的模塊提供了豐富的功能,例如通過OpenSSH來連接服務器,Ping模塊可以用來測試連通性,Command模塊可以用于遠程執(zhí)行命令,Cron模塊用來創(chuàng)建計劃任務。Ansible在調用模塊時有兩種方式可以選擇,一種是通過adhoc,另外一種是Playbook。比較強大的是通過Playbook的方式調用模塊,在Playbook中可以按照運維工作的需求進行DIY的編排,在編寫Playbook腳本時同時調用多個模塊,將各個模塊進行搭配使用提高工作效率。

除了通過平臺實現(xiàn)自動化運維,之前也提到可以使用腳本的方式來實現(xiàn)自動化運維,通過腳本來實現(xiàn)自動化運維對工程師的基本功有較高的要求,因為編寫腳本要求工程師掌握相應的腳本語言,并對操作系統(tǒng)有一定的了解。例如如何通過腳本批量連接服務器,如何調用設備內系統(tǒng)的相關功能等。有了這些知識作為基礎就可以編寫相應的腳本來實現(xiàn)部分功能。常用的腳本語言有Batch、Shell、Python等。其中Batch腳本是在Windows系統(tǒng)中最常用的。Shell腳本是在Linux系統(tǒng)中較常用的。Python可以跨平臺,Windows系統(tǒng)和Linux系統(tǒng)都可以使用,同時也可以在華為的網絡設備中使用。Python語言也是目前各類語言中比較好掌握的一個。最快學習一周便可寫出自己的一個小程序。同時Python內部也集成了很多的模塊,在編寫腳本的過程中如果需要一些功能,可以通過調用相應的模塊來增強腳本的功能。最簡單的,例如需要在Windows中調用CMD來執(zhí)行一些命令就可以調用OS模塊來實現(xiàn),之后再將命令傳遞給os.system()或os.popen()就可以了,如果需要執(zhí)行一些其他的功能但是Python內部并沒有相應的模塊的話,還可以通過安裝第三方模塊來實現(xiàn)。

拿一個自動關機腳本來舉個小例子吧。如圖所示,這是一個Windows系統(tǒng)定時關機的Python腳本,用戶在使用時可以根據(jù)自己實際的需要來輸入預計在幾個小時后關閉設備。同時也提供了在一些情況下需要取消自動關機的解決辦法。

4.png

其中這部分是將OS模塊引入到腳本中,這里會調用OS模塊中的一些方法。

5.jpg

這里使用了一組print函數(shù)是為了給用戶一個提示,畢竟使用這個小工具的人不一定是編寫這個腳本的人,所以要簡單說明腳本如何使用。

6.jpg

這里用一個變量time來承接用戶輸入的內容。為了增加一些友好度,寫了一些提示。

7.jpg

拿到用戶輸入的內容之后,便開始進行判斷,首先判斷用戶是否要進行計劃關機操作。如果是關機操作的話,會將用戶的輸入內容返回到屏幕上用來給用戶做二次確認。同時也給用戶一個糾錯的選項。如果二次確認沒問題,那么就開始進行一個計算,因為在Windows系統(tǒng)中shutdown命令后面的時間是按秒計算的,所以這里直接做一個乘法。最后將關機命令前綴“shutdown-s-t”與所得到的時間進行一個拼接,將拼接之后的字符串傳遞給os.popen來調用Windows系統(tǒng)命令執(zhí)行該操作。以上說的是進行關機的操作,如果用戶在二次確認時發(fā)現(xiàn)時間輸入有誤,則不會執(zhí)行字符串拼接和時間計算的過程,直接退出程序。

8.jpg

最后這一部分是當用戶想要取消計劃關機時所執(zhí)行的命令,當用戶輸入“off”時,程序會取消之前的計劃關機任務。

9.jpg

這個例子是一個很簡單的小腳本,其實里面還有很多的功能可以進行優(yōu)化,例如用戶二次確認之后如果輸入有錯誤可以進行重新輸入等其他功能,甚至可以做成對話框交互的形式。

聊了這么多自動化運維的實現(xiàn)方法,使用自動化運維的主要目的還是降低人工的負擔和誤操作率。以前一百臺設備的運維可能需要5個人來完成,但是1000臺設備10個人也不一定能完全覆蓋到,還有在做一些系統(tǒng)錄入的時候,如果單靠人工的逐條錄入,不僅工作效率低,時間成本也會增加。所以,自動化運維技術在日常的工作中仍是一個需要去不斷去學習的。與其在眾多設備中忙到脫發(fā),不如寫一個腳本,喝杯茶等待工作自動完成。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論