阿里智慧運維實踐|阿里巴巴DevOps實踐指南

雲效DevOps平臺發表於2022-01-28

image.png

 

編者按:本文源自阿里云云效團隊出品的《阿里巴巴DevOps實踐指南》,掃描上方二維碼或前往:https://developer.aliyun.com/topic/devops,下載完整版電子書,瞭解阿里十年DevOps實踐經驗。

阿里巴巴的運維團隊致力於打造無人值守的運維平臺,用智慧化推動高效率、低成本的應用運維。智慧運維是運維平臺實現資訊化和數字化之後的自然發展,利用紮實的技術基礎,把機器學習、優化演算法和各個專業領域方面的知識完美結合起來,針對具體運維場景提供令人滿意的解決方案。

智慧運維( AIOps )是依託於阿里巴巴 DevOps 經驗沉澱而來的智慧化運維平臺,通過運維大資料的積累,以及演算法團隊多種演算法的校對,我們將運維提升到新的高度,通過 AI 來幫我們檢視資料、判斷異常、決策運維操作,形成監、管、控一體化的運維平臺。

運維體系面臨的挑戰

DevOps 運維時代,阿里巴巴運維體系面臨如下挑戰:

第一,規模化。阿里巴巴的基礎設施規模呈指數級增長,在伺服器數量是千級別、萬級別的時候還勉強可以通過人為操作來運維,但發展到百萬級別的時候,任何一個步驟依賴純人為操作都是不現實的。伺服器規模百萬級的時候,如何保證整體運維安全、高效的進行是第一個挑戰。

第二,高複雜。阿里巴巴業務的多樣性及高速發展也對系統穩定性提出了更高的要求,對運維體系帶來更大的挑戰。曾經我們考核系統可用率 7 個 9,儲存方面達到 6 個 9 就很好,但是盒馬鮮生這樣的業務是要求 100%可用。作為線下業務,在盒馬店有半小時不能支付是無法接受。我們要從全鏈路視角出發,關注每個環節的穩定性建設。

第三,成本優化。成本是門檻,做不到一定的門檻,進入這個市場的機會都沒有。除了固定資產投入,運營成本也是很重要的一部分。利用技術進行流程優化,降低各個部分的成本,是提高業務的核心競爭力的關鍵。

第四,安全。雲端計算最關心的是安全。系統越來越大,變化越來越快,所面臨的內部和外部的風險也越來越大。每天無數變更升級同時進行,如何在系統變更時保持穩定,是需要面對的另一個巨大挑戰。

阿里巴巴基礎設施的體量和複雜性,顯然都超過了人腦的處理能力,需要從新的視角,應用機器智慧來解決這些複雜的問題。

 

image.png

 

智慧運維實踐

基於上面的挑戰,我們在阿里巴巴集團各個業務場景落地了無人值守釋出、無人介入運維的解決方案。

無人值守釋出 (Unmanned Deploy)

全新一代釋出平臺支援滾動、藍綠、金絲雀等多種釋出模式。通過演算法,機器學習方法對應用釋出過程進行異常檢測,從而避免由於程式碼變更導致的故障。基於大量監控資料、日誌資料的積累,並有演算法的加持,我們推出了無人值守釋出系統。

無人值守釋出 riskfree 系統上線以來,從探索到實現再到優化經歷了將近三年的時間。目前業務範圍定義在應用釋出時故障預防。接入無人值守釋出的應用在提交發布單後,系統會對整個釋出過程中的監控資料進行分析,如果有異常會自動暫停釋出,並提示異常指標和攔截原因,開發確認有問題則可以選擇關閉或回滾,沒有問題則繼續釋出。

線上釋出之痛

以往線上釋出的時候,工程師們一般做了如下“精心”工作:

  • 釋出前

測試人員對程式碼進行全方位的單元測試、整合測試,如果發現 Bug,會讓開發人員返工。這裡有兩個問題:第一,有些業務團隊由於人員問題,根本就沒有測試人員,自己既是開發也是測試;第二,不是所有的 Bug 都能通過測試發現,難免有漏網之魚。

  • 釋出中

進行預發、灰度、分批發布、金絲雀釋出。在每一個環境緩慢釋出過程中,要到監控平臺,檢視各個監控,甚至登入到機器上“刷”日誌,通過自己的“火眼金睛”,期望能在眾多的日誌中,找到某個特殊模式的異常日誌;另外,如果是多方依賴的應用,還要檢視上下游的應用監控有沒有問題。

  • 釋出後

檢查一下應用的機器是否都正常啟動,將失敗的機器下線或者置換掉,看看故障系統有沒有報警,看看上下游團隊有沒有“叫”起來,如果有,得馬上回滾。總之,這個過程是既耗時又耗力,而且還不能保證沒有漏掉一處細節,並且不同釋出人員的經驗不一樣,熟手和新手對一個釋出的穩定性保障程度有巨大差別。

我們的解法

我們設計了一套無人值守釋出系統

image.png

 

系統分為兩大部分:

  1. 線上分析,無人值守釋出系統會對系統監控、業務監控、日誌監控、呼叫鏈路等維度進行異常檢測,檢測到異常後,會對釋出單進行攔截或回滾。當使用者認為無異常時,會進行反饋,繼續釋出。
  2. 離線分析,在第一步中使用者反饋後,這個反饋資料對我們的演算法非常有用,可以對我們的演算法進行自動的調整。當反饋資料積累一段時間之後,異常檢測的準確率就非常高。

演算法平臺

在釋出的過程中,系統會採集各個監控源的資料,對資料的採集、清洗、儲存要求很高,我們設計了演算法平臺來承接各個平臺的資料來源、演算法檢測、演算法驗證、演算法上線等流程,系統架構如下圖所示。

image.png

 

主要包含三大部分:

  1. 資料採集儲存:對各個監控資料來源的資料進行採集,包含系統監控、業務監控、中介軟體監控、日誌監控、資料庫監控、雲監控等。資料採集後,根據不同資料的特性,存在時序資料庫或者關聯式資料庫中。
  2. 演算法結果儲存:對於每次檢測的結果都會進行儲存,以方便結果排查和效果評估。
  3. 資料打標:對每次異常檢測結果,都可以打標,利用打標資料來重新訓練演算法,形成正向迴圈,檢測的結果也可以通過郵件、釘釘實時通知給釋出者,且可以自動對接前面介紹的運維編排自愈流程,比如,將異常的機器直接自動置換掉。

智慧演算法

在上面的演算法平臺中,我們設計了眾多異常檢測演算法。異常檢測在無人值守釋出系統中有著舉足輕重的地位,主要分為三個部分:

  1. 資料採集:我們綜合了各個維度的監控資料、呼叫鏈路分析等,在觀測的廣度上是人工盯屏所不能相比的。
  2. 異常檢測:我們精心調校的異常檢測演算法,完全不依賴於傳統的基於閾值、3Sigma 等檢測演算法,全部自動判定,泛化能力好,支援單指標檢測、多指標檢測、前後對比檢測、已釋出未釋出對比檢測等多種模式,檢測演算法包含 ArimaKSigma、BoxplotDetect 方法(Tukey 方法)、GrubbsTest 方法、Donat 等。
  3. 排除正常波動:通過歷史資料、使用者反饋資料,精準過濾正常的波動,讓使用者得到精準的異常檢測結果,示意圖如下:

 

image.png

 

實踐效果

無人值守釋出自上線以來,覆蓋了阿里巴巴集團所有的應用釋出過程,為釋出的安全穩定保駕護航,異常檢測結果如下圖所示:

 

image.png

 

至此,接入無人值守釋出後,開發可以在點選發布後專注別的事情,不需要時時關注釋出過程。如果釋出過程出現異常,系統會通過釘釘訊息、郵件通知到開發,再介入即可,如果過程是機器異常則自動替換異常機器,開發無需人工介入,釋出將繼續。

簡單總結一下,無人值守釋出是一個智慧化變更故障檢測和異常推薦系統。通過對變更執行過程中的多維度監控資料進行分析,判斷當前變更是否會造成故障,在釋出出現異常的情況下進行攔截和智慧推薦。

無人介入運維-ChatOps (Unmanned Operations)

日常運維有很多類別,目前我們專注於其中兩類運維工作的“無人介入”:1. 使用者接到告警或事件而發起的運維操作;2. 日常運維答疑或諮詢。

針對第一種情況,通過“運維診斷”,給應用來一次 360 度全方位“體檢”,找到異常點並一鍵修復;針對第二種情況我們釋出了 ChatOps 機器人來加強 DevOps 之間溝通與合作,幫助研發完成一些“髒活”、“累活”、“機械式”任務,目標是達到“0”人工介入的諮詢和答疑。

ChatOps 簡介

運維小蜜(簡稱“維蜜”),是 chatbot 在運維領域的實踐,也是 ChatOps 的具體實現,是 DevOps 的重要工具。維蜜的定位是面向應用的智慧 DevOps 服務助理,那麼攤開來講:

  • 面向應用:將應用的開發、測試、運維的同學集合起來,加強溝通與合作,縮短產品上線時間,降低人力成本,在產品出現問題時能夠快速檢測並修復,減少甚至消滅產品服務中斷可能性,保證開發和運維的同學時刻處於同一個上下文中,時刻了解應用所處的狀態。
  • DevOps:強調快速迭代,持續交付,力求資訊共享、技術學習與合作、加快資訊反饋週期。
  • 智慧:理解使用者輸入的指令,根據命令槽位的元資訊和使用者自身的資訊確定命令各個引數的值,通過自然語言處理和理解使用者指令。

維蜜就是希望通過一觸即達,秒級響應的體驗,把服務做到極致,讓研發、測試、運維同學幸福地工作,是我們的終極目標。

ChatOps 優勢

我們再來看運維小蜜有哪些價值:

第一,從員工個人的角度來看,能夠提升員工的工作效率。運維小蜜可以幫助使用者處理簡單、重複、枯燥的工作,例如日誌檢視、命令執行、開關報警、檢視機器狀態、檢視監控、運維事件推送等。

第二,從團隊溝通的角度來看,能夠降低協作成本。在團隊內部,ChatOps 是一種透明、合作、會話驅動的開發模式,群裡所有人都知道 what/when happening & who/how fixing it ,也就實現了事件發生場景完整、透明,事件解決過程共享、可查詢、可記錄,便於其他同學對同類事件處理的學習參考,即所謂“Teachby doing”。

ChatOps 也是一種會話驅動的運維模式,通過聊天機器人對接各種系統後臺,將軟體開發、交付過程中涉及的開發、測試、運維人員、工具、環境、自動化程式等串聯起來,使得聊天室裡的所有人能夠圍繞某個特定話題進行資訊共享、技術學習與合作,加快應用的測試、釋出、監控、診斷,整個工作的展開全員可見。

運維機器人帶來的好處包括:

  1. 方便,把很多系統的常用操作聚合到機器,就不用登陸多個系統找資訊。
  2. 協作,事件發生的全部資訊推送至聊天室,所有成員均能夠了解你這兒發生了什麼。
  3. 快速,定位問題時,能夠讓大家都看到所有的資訊,不必讓每個人重複的搜尋資料。

 

image.png

 

ChatOps 實現

我們再來看運維小蜜的實現架構圖:

image.png

 

主要包含三個模組, 分別是 dialogue manager 、nlp tools 和 intent dispatcher manager 。其中dialogue manager 用於判斷使用者的 utterance 的意圖是什麼, 是發起一輪新的對話還是承接上面已有的意圖, 它呼叫 nlp tools 的處理器輔助判斷。intent dispatcher manager 負責對接具體的業務系統, dialogue manager 處理後的結果傳到它呼叫具體的業務邏輯觸發任務的執行。

ChatOps 實踐

我們再來看運維小蜜在阿里巴巴集團的幾個落地場景:
1、 智慧問答

image.png

 

2、 查詢應用的監控資訊

image.png

 

3、 機器置換

image.png

 

總之,ChatOps 可以幫助我們提升開發效率,提升開發幸福感。

總結

隨著智慧化演算法的成熟和大量運維資料的積累,智慧化在運維場景的落地也會越來越多,阿里巴巴運維從阿里集團大量研發場景出發,打磨出一系列智慧化運維產品,並賦能中小企業。我們的理念是把複雜留給自己,把簡單留給使用者。智慧化是運維的終極狀態,未來我們將在自動化、無人化和智慧化上做更大的投入,打造世界級的智慧運維平臺。

【關於雲效】

​ ​雲效,雲原生時代一站式BizDevOps平臺​​,支援公共雲、專有云和混合雲多種部署形態,通過雲原生新技術和研發新模式,助力創新創業和數字化轉型企業快速實現研發敏捷和組織敏捷,打造“雙敏”組織,實現 10 倍效能提升。

​ ​立即體驗​​

阿里智慧運維實踐|阿里巴巴DevOps實踐指南

相關文章