如何針對性破解自動化運維落地的18個關鍵問題?
不久前,我做過一個關于企業(yè)自動化運維落地經(jīng)驗及工具對比的分享和介紹,其中很多場景是我根據(jù)實踐經(jīng)驗對一線互聯(lián)網(wǎng)公司和傳統(tǒng)行業(yè)的做法進行的對比闡述:如何將自動化運維形成一個整體?如何從方法論的角度去理解自動化運維、去建設自動化運維?該文引發(fā)很多讀者的感觸、思考。
本文通過整理運維愛好者們提出的一系列自動化運維落地的具體問題及討論結果,總結成文,供大家參考學習。
一、自動化運維平臺風險
問題1:自動化運維風險如何控制?
- 一是所有自動化功能模塊的本質都是落到代碼層面,那么就需要對自動化運維功能的代碼進行測試,適用于開發(fā)項目管理的流程;
- 二是對于一些刪除或者修改類的操作,需要考慮double check和回滾方案,對于不能回滾的操作不能做(這點其實和手工操作是沒有區(qū)別的);
- 三是灰度策略,可以采用灰度的方式來驗證自動化操作結果和預期是否一致,如果一致則繼續(xù)進行,如果不一致則需要進行回滾;
- 四是監(jiān)控配合,監(jiān)控系統(tǒng)能夠及時發(fā)現(xiàn)有問題的操作并及時報警;
- 五是權限管理,對于能夠操作自動化運維平臺的,需要有嚴格的權限控制;
- 六是通過API對接的系統(tǒng),需要有鑒權機制。
問題2:自動化運維平臺的安全和權限如何控制?
個人認為應該注意以下幾個方面:
- 對于Web頁面操作的通過AD域加角色的方式進行權限控制;
- 對于接口調用的情況需要有相應的權限模塊;
- 對于運維平臺自身,要防止平臺在未授權的情況下對生產資源進行刪除和修改操作;
- 定期對平臺進行安全掃描,掃描平臺自身的漏洞。
二、自動化運維平臺規(guī)劃
問題1:自動化運維的建設應該如何規(guī)劃?
這個問題沒有固定的答案,分幾步需要結合具體情況,最終的目的是要實現(xiàn)所有的端到端的交付。一般來說大體可以分為以下幾個階段:
- 解決目前最急切的痛點(這里一般是指運維團隊自身***的痛點或者擠壓已久的沒有解決的其他團隊提出的問題);
- 收集IT部門其他組(開發(fā)和測試團隊)的自動化運維需求并內部排期解決;
- 在解決了前兩者點上的問題之后,將各個點串聯(lián)起來,消除點與點之間人肉工作;
- 在初步形成的自動化運維鏈條上查漏補缺,形成正向反饋鏈條。
問題2:自動化運維建設中,標準化的規(guī)范如何制定?
標準化需要結合公司的具體情況,一般而言有以下幾個方面需要進行標準化(供參考):
- 服務器Pod標準化,一個Pod放幾臺機器,如何連接;
- 物理機機型,計算密集型、內存型、IO密集型還是存儲型,需要將不同廠商的機型歸納為幾個標準機型;
- 操作系統(tǒng)標準化,包括操作系統(tǒng)版本、操作系統(tǒng)內核參數(shù)、盤符路徑等;
- 軟件安裝標準化,包括軟件版本、安裝路徑、日志路徑、日志切割、參數(shù)調優(yōu)等;
- 軟件部署標準化,雙節(jié)點不能部署在同一臺物理機和同一個機柜上,避免主機和機柜級故障。
問題3:在實際的運維環(huán)境中,我們該如何制定一套完整的自動化運維管理方案,用來支撐自動化運維工作?
制定自動化運維方案,需要考慮以下幾個方面:
- 明確制定自動化運維方案的目的,這是制定自動化運維方案的指導思想;
- 明確自動化運維方案的服務對象角色;
- 明確不同的對象角色在自動化運維過程中的抓手分別是什么;
- 明確自動化運維方案落地過程中需要注意的安全問題(例如權限細化、調用鑒權、操作審計等);
- 通過調研的方式進一步了解其他同事的運維需求;
- 在方案里明確建設自動化運維平臺計劃分幾個階段,將需求分散在這幾個階段里;
- 明確將自動化運維方案落地為自動化運維平臺時的具體方式(自研、外購還是基于外購進行二次開發(fā));
- 在自動化運維方案中明確平臺在使用過程中的正向反饋流程。
問題4:自動化運維的建設,需要分幾階段進行?應如何做規(guī)劃?
這個問題沒有固定的答案,分幾步需要結合具體情況,最終的目的是要實現(xiàn)所有端到端的交付。一般來說大體可以分為以下幾個階段:
- 解決目前最急切的痛點;
- 收集IT部門其他組(開發(fā)和測試團隊)的自動化運維需求;
- 在解決了前兩者點上的問題之后,將各個點串聯(lián)起來,消除點與點之間人肉工作;
- 在初步形成的自動化運維鏈條上查漏補缺。
三、CMDB數(shù)據(jù)采集問題
問題1:CMDB建設過程中,如何實現(xiàn)自動發(fā)現(xiàn)?
CMDB的自動發(fā)現(xiàn)一般基于以下幾種方式:
- 通過調用被采集方軟件的API接口獲取相關信息,例如VMware、EMC存儲等;
- 通過某種協(xié)議(公有或者是私有協(xié)議),例如SNMP去獲取相關配置信息;
- 通過在主機上執(zhí)行命令,并對結果進行處理,例如抓取主機上中間件的信息;
- 通過執(zhí)行中間件的命令來獲取信息。
自動化發(fā)現(xiàn)一般是通過以上幾種方式的組合來實現(xiàn)自動發(fā)現(xiàn)的目的。
問題2:自動化運維的建設中如何選擇CMDB自動收集數(shù)據(jù)?
這個問題有點大了,具體到數(shù)據(jù)收集這個點上而言,CMDB的數(shù)據(jù)要想收集全面,需要從兩個方面去考慮:一是CMDB采集工具自身的自動化采集能力,二是有些數(shù)據(jù)需要通過流程的方式來督促人工錄入,例如業(yè)務系統(tǒng)名稱、業(yè)務系統(tǒng)運維負責人、開發(fā)負責人、測試負責人這些信息自動采集工具是采集不到的,需要人工維護。
如果需要建設CMDB系統(tǒng),有三種思路:
- 完全自研,這就要求團隊的研發(fā)能力比較強,并且有人對ITIL的流程比較了解,自動采集實現(xiàn)較慢;
- 直接采購商業(yè)的CMDB產品,好處是快速上線、自動采集能力強,缺點是有些需求可能無法直接滿足,需要定制開發(fā);
- 基于開源的產品做二次開發(fā),例如基于IOP,但是自動發(fā)現(xiàn)能力還是要自己實現(xiàn),優(yōu)勢是有一個基本可用的框架。
問題3:如何同時保證CMDB數(shù)據(jù)的實時性與一致性?
- 實時性:保證CMDB數(shù)據(jù)的實時性需要依賴CMDB工具的自動化采集能力;
- 一致性:一致性需要流程控制和定期的數(shù)據(jù)審計操作,數(shù)據(jù)審計操作可以借助CMDB平臺的能力來實現(xiàn)。
四、運維工具選型
問題1:自動化運維工具選擇時,應該對哪些因素進行考量?
在選擇自動化運維工具時筆者認為應該從以下幾個方面考量:
- 自動化運維工具的成熟度,即在業(yè)界的受眾面。這里無論是對商用的還是開源的都可以從這個角度進行評估;
- 自動化運維工具的功能能否滿足運維需求;
- 如果是選擇開源的自動化運維工具還要考慮工具的技術棧和公司人員的技術棧是否匹配;
- 自動化運維工具在安全方面是否有良好的支持;
- 自動化運維工具在工作過程中對主機性能的影響,尤其還要測試在并發(fā)大的時候,對運維工具平臺自身服務端的壓力;
- 還要考慮選擇的自動化運維工具是否滿足公司后續(xù)技術棧的發(fā)展需要。
問題2:自動化運維建設中的運維工具的規(guī)劃和集成問題?
目前而言,大多數(shù)公司的確會存在這樣的問題。在我看來問題之所以會存在,最主要原因是在前期缺乏一個宏觀的整體規(guī)劃,各個組織各自為政,沒有統(tǒng)籌管理。
那么對于已經(jīng)存在的現(xiàn)狀要如何處理呢?在我看來要做以下幾件事:
- 需要成立一個治理小組,成員包括各個存在系統(tǒng)的Owner,然后由一位領導擔任組長;
- 各個系統(tǒng)Owner闡述當初建設這個系統(tǒng)的背景以及該系統(tǒng)現(xiàn)在能解決什么問題、還有什么問題沒有解決;
- 依據(jù)第二步的討論結果進行合并工作,將能合并的系統(tǒng)進行合并,不能合并的但是功能有重疊的進行數(shù)據(jù)打通,統(tǒng)一進行輸出;
- 后續(xù)新建系統(tǒng)時需要由治理小組統(tǒng)一規(guī)劃,避免類似事情再發(fā)生。
問題3:自動化運維產品如何選擇?
自動化運維涉及的面非常廣,一般大家談到的包括資源的自助服務、監(jiān)控、調度任務、應用發(fā)布等。那么在選擇產品的時候需要考慮以下幾點:
- 梳理清楚自身的痛點,即目前最需要解決的問題是什么;
- 規(guī)劃:計劃在3年內做到什么樣的效果;
- 所選自動化運維平臺的產品成熟度(同行業(yè)案例多少);
- 自動化運維平臺的開發(fā)程度,能否進行二次開發(fā)或者是支持功能拓展;
- 平臺的技術框架是否是主流的技術框架;
- 通過試用來測試和本地實際情況的結合程度。
五、其他
問題1:AIOps和自動化運維是什么關系?
AIOps是自動化運維的一部分,是這幾年隨著AI火爆后開始出現(xiàn)的領域,自動化涉及運維操作的方方面面,AIOps僅僅是將AI技術應用到現(xiàn)有的Ops平臺上,一般同時都會結合大數(shù)據(jù)技術一起使用。
問題2:是否可以結合當前的一些先進技術,如云計算、大數(shù)據(jù)等,使得自動化運維更加高效、智能?
結合云計算能力,可以快速擴容自動化運維平臺的服務能力;結合大數(shù)據(jù)和人工智能技術,可以使自動化運維平臺提供更強大的功能,就是現(xiàn)在很多人開始關注的AIOps。
風險需要人工來審核,比如基于大數(shù)據(jù)和人工智能技術對某種行為進行自動操作,那么在剛開始使用這個技術的時候需要人工進行double check,并且對劃定優(yōu)先級和重要性級別。對于一個低優(yōu)先級和低重要級的可以自動處理。
問題3:在運維的關注點上,傳統(tǒng)企業(yè)與互聯(lián)網(wǎng)企業(yè)有哪些不同?
傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)在運維環(huán)節(jié)的不同在以下幾個方面:
- 運維代碼化:傳統(tǒng)行業(yè)的運維更多的還是停留在人工操作運維平臺的層面甚至是純人工操作,而互聯(lián)網(wǎng)更多的是通過代碼來進行運維,避免人工操作,這也是為什么互聯(lián)網(wǎng)公司對運維有要求開發(fā)能力的原因;
- 點化與線性化:傳統(tǒng)行業(yè)的運維分不同時間購進了很多運維平臺,而各個運維平臺之間是獨立的、離散的。而互聯(lián)網(wǎng)的運維平臺多是線性的,可以實現(xiàn)端到端的交付與串聯(lián);
- 對人員要求不同:互聯(lián)網(wǎng)公司無論是哪個層面的運維都要求有一定的開發(fā)能力或者是一些原理的深入了解(代碼層面),而傳統(tǒng)行業(yè)更多的是對操作層面的要求。
問題4:自動化運維平臺如何能更好的貼近業(yè)務?及時發(fā)現(xiàn)業(yè)務的已經(jīng)發(fā)生的風險和將要發(fā)生的風險?
自動化運維要更好的貼近業(yè)務首先需要收集業(yè)務的自動化運維需求,通過平臺來滿足業(yè)務的自動化運維需求,這是***步要做的工作。
其次需要對業(yè)務系統(tǒng)進行監(jiān)控,在此基礎上,需要和業(yè)務溝通風險指標,將風險指標進行量化,并配置到自動化運維平臺的監(jiān)控系統(tǒng)中,利用平臺的監(jiān)控能力進行724小時監(jiān)控,當出現(xiàn)指標達到報警閾值的時候,就通過短信、微信、郵件等方式進行告警。
***,對于風險指標的配置可以通過大數(shù)據(jù)分析和AI的結合來逐步完善,形成一個適合每個業(yè)務系統(tǒng)的正向反饋鏈。
問題5:傳統(tǒng)的IT運維與自動化運維有什么差別?
之所以會出現(xiàn)半自動化的運維,其實就是因為這些解決的都是點上的問題,都是把每個點的人工操作變成了腳本化或者平臺化的自動動作,是離散的,本質上還是點而不是線,更不是面。真正的自動化運維是要達到端到端的自動化交付,是從開發(fā)到測試到運維全鏈路的自動化,去除人工操作。
舉一個例子,創(chuàng)建一個Redis中間件,半自動化的做法是:
- 在虛擬化平臺申請機器;
- 網(wǎng)絡分配IP地址(人工);
- 通過另外的腳本對機器進行初始化(人工執(zhí)行腳本);
- 通過安裝腳本安裝Redis(人工安裝);
- 郵件或者人工告知申請方。
自動化的做法是:提交創(chuàng)建Redis需求,自動化平臺做好所有的事情,然后調用郵件接口,通知申請者。
問題6:自動化運維自主研發(fā)的邊界如何界定?既可以做到自主可控,又可以全面發(fā)揮和提升員工的能力?
自主可控有兩種思路,一種是完全自研;另一種是基于一個采購的自動化運維平臺進行二次開發(fā)。
對于***種情況,需要公司人員具備一定的開發(fā)能力,優(yōu)勢在于可以并充分結合本地需求,缺點是對人員要求比較高并且平臺成型較慢;
對于第二種情況,需要采購一個平臺技術棧實現(xiàn)與本公司開發(fā)或者運維人員匹配的平臺,并且要求平臺方開放源代碼或者提供豐富的二次開發(fā)接口,優(yōu)勢是可以快速滿足至少80%左右的需求,劣勢是需要理解已有的代碼,靈活性不夠。
以上關于企業(yè)自動化運維落地的18個問題的解答,希望對各位朋友有所幫助~
作者介紹
王洋,某基金公司信息技術部基礎架構師,曾就職于螞蟻金服金融云部門、商業(yè)銀行IT信息技術部門等。擅長領域:云計算IaaS和PaaS平臺規(guī)劃與建設基礎架構高可用、高性能和容災設計、容器化(Docker)與微服務等等。