多雲環境下的AIOps
以AI來維運我們的雲端環境,相信是非常多人想望的維運模式。但是目前的現況真的可以做到我們想像中的這種程度嗎?AIOps做的是在雲端環境中的workload的整體健康狀態與行為分析,意思是分析是從程式代碼開始到底層的基礎設施。AIOps工具能夠發現可能會發生的問題,然後提供其優化的建議給我們。AIOps應該是多雲環境運作的強大工具,因為它是從程式面與業務面的角度來看待我們的雲端維運。
本文將屆紹AIOps的一些概念。我們將會討論一些AIOps的組件,包含資料分析、自動化與機器學習。我們將會理解到AIOps將如何協助我們優化雲端環境,以及企業如何開始他們的AIOps。
本文的重點有:
- 認識AIOps的概念
- 使用AIOps優化我們的雲端環境
- 多雲環境下的AIOps工具探討
AIOps的概念介紹
AIOps結合了大數據與機器學習能夠自動的檢查與修正在我們IT環境裡所發生的問題。AIOps會持續學習與分析在整個IT環境內如何關聯不同的事故(incidents)。它學習的是不只是IT環境的內部還有其外部的依賴關係。
特別是在多雲的環境中,當企業的環境是一個混和模式(地端加多雲)。企業要在這一個複雜的環境看到全貌(可見性),其實不太容易。當某個特定的客戶經過某個或幾個雲端平台,然後回報效能很差。工程師如何能馬上判定問題點在哪裡呢?這通常是有困難的。
AIOps 通常是高度複雜的系統,包括以下組件:
- 資料分析
AIOps從整個IT環境的內外部去收集所有的監控資料與日誌進行分析,可能包含了外部社群媒體與IT服務台的事件報告。AIOps會聚合與分析這些資料,尋找資料的趨勢與模式,並且比較已知模型。 - 機器學習
AIOps會使用演算法。意思是AIOps會記錄系統、程式與使用者的正常行為作為baseline。隨著時間的推移系統、程式與使用者的行為可能會改變。AIOps也會一同紀錄這些改變,並持續評估這些新的行為模式。根據演算法,AIOps會根據優先順序處理這些IT事件與告警,並且開始處理它們。 - 自動化
這是AIOps核心的部分。如果系統偵測到問題,未預期的變更或是不正常的行為,系統就會開始進行修正。這只有我們的環境有高度自動化時才能做到這一點。靠著分析結果與演算法,AIOps能夠決定甚麼樣的方法最適合解決偵測到的問題。例如資源不夠用,AIOps就會增加資源。或是分析到期將到來的大量資源使用,它也會超前佈署需要的資源。而這一些都不需要人為介入。 - 虛擬化
雖然AIOps是高度自動化與自我學習的,但工程師還是需要知道AIOps在做些甚麼。所以AIOps也會提供即時的的dashboard與報告給予技術人員,並且建議優化其系統架構。而這也是AIOps做不到的事 — 它無法變更我們的雲端架構。企業還是需要架構師為整體環境不斷進行優化。
AIOps是DevOps的延伸,意思是: 只有當企業做好了DevOps/DevSecOps後,才有辦法進行AIOps。但是當企業真的做到AIOps這一步是否就不再需要維運團隊了呢(也就是很多人說的NoOps)?答案可能沒哪麼簡單。當一切的日常維運都自動化了,我們還是需要技術人員針對系統進行治理。像是系統的設定與實行維運的baseline。
使用AIOps優化我們的雲端環境
使用AIOps有兩個主要效益,第一個是偵測不正常與回應的"速度與正確性"。這通常是人類辦不到的,第二個是量能優化。大部分的CSP也有依據監控資料對其資源進行scale out/up的機制。但AIOps卻可以知道該調整的門檻在哪裡,而且該門檻還是動態的。
既然AIOPs是持續性在學習的,哪它就可以對其在何時與甚麼樣的資源需求有需要時進行預測(predicting)。下圖是一個維運模式從描述性(descriptive)到規範性(prescriptive)。大部分的監控工具都是描述性的,而AIOps則是預測性的:
監控簡單的來說只記錄了發生了甚麼。企業經過邏輯性分析發生的事件資料然後進行修正行動,這個做法只是維運的第一階段: 回應性維運。像打地鼠一樣,發生了甚麼就去補甚麼。而AIOps則屬於主動與預測性的。靠著資料分析,AIOps能夠預測變更之後的影響。維運的最終階段則是規範性的,意思是系統能夠告訴我們接下來會發生甚麼系統已經準備好該如何應對它(全自動化的)。
AIOps可以協助我們管理與優化複雜的多雲環境。AIOps能夠做到這一點是因為使用機器學習演算法來進行資料分析,這些資料從雲端的Infra,應用程式到日誌來辨識在雲端中會導致發生問題的模式與不正常。這讓IT團隊能夠在問題發生前預測與防止,並減少停機時間與增加系統的可用性。
AIOps除了可以應對我們日常的維運之外,最重要的它可以進行RCA(Root cause analysis)。這一個工作它能做得比人類又快又好,因為分析多個監控資料來源速度與正確性事人類無法比的。
說了這麼多,哪麼企業應該從哪裡開始進行AIOps的維運模式呢?以下是一些企業運用AIOps的一些建議指南:
- AIOps是一個學習系統
系統是需要逐步學習的,企業需要學習如何解讀AIOps分析出來的結果與決策。所以一次到位的作法很危險。需要一步一步的迭代進行。 - 資料是基礎
分析的資料不只有從IT環境產生的,最好還有業務資料也能夠進行分析。畢竟AIOps是為了企業業務能夠順利地進行,假若AIOps能夠知道企業產品的淡旺季(業務驅動的資料),哪它就更能夠優化我們的整體IT環境來應對企業的銷售。 - 標準化
這可能是最重要的部分。畢竟在多雲的環境中,沒有標準化(一致性)。我們就不可能運作順利。
AIops 還可以幫助針對實際場景進行測試,並在測試方面考量更多因素。 因此,AIops 是 DevOps 和 CI/CD 管道的一個很好的延伸,執行頻繁的應用程序發布。 AIOps 將知道當更改應用於某個系統時哪些系統將受到影響,反之亦然:哪些系統將變更後有效能和穩定性方面影響。 這些可以是託管在不同雲端平台中的系統; 它們可以是application chain的一部分。
當不成比例地消耗資源的程式和系統共存的問題被稱為noisy neighbor。 AIOps 將能識別neighbor,讓我們了解即將發生的變化,甚至採取主動措施避免應用程式和系統遇到麻煩。而這超出了 CI/CD pipeline觸發的單元和整合測試的範圍。
當今的多雲環境非常複雜,伺服器和服務在各種雲端中運行。 系統通過不同雲端平台的network backbones連接,通過企業的gateway路由資料,同時不斷檢查使用者和系統是否仍然符合所應用的安全框架。 在這些環境中分散應用程式在雲端中時,很有可能會錯過一些東西。
AIOps能夠優化我們的整體架構。而架構師必須能夠在架構以及應用程式與系統的連結中有深入的見解,這是AIOps做不到的。這需要全面性的理解,不只包含伺服器,還有網路與安全裝置。再來AIOps協助我們再把應用程式分發在不同的雲端平台中能夠擴展所需的資源,即使這些資源在不同的雲端平台中。
多雲環境下的AIOps工具探討
AIOps的前提是企業必須是資料驅動的組織。而 IT 和 IT 架構是由業務決策驅動的,但業務本身則是由資料所驅動的 — 市場的開發速度可以有多快,客戶在哪裡,客的需求又在哪裡,企業的IT如何準備應付這些需求呢?現代企業能快速適應這些市場變化的主體是IT,而雲端運算則正是為此而誕生的。雲端運算是企業數位轉型的基礎,而資料驅動著企業的每一個決策。
這就是 AIOps能做的。 資料驅動型企業原則的組織必須能夠存取來自 IT 內部和外部的許多不同來源的大量資料。 它需要擁抱自動化。 但最重要的是,它需要信任並依賴數據分析、AI和機器學習等複雜技術。 對於許多企業來說,這是真正的範式轉變。 它不僅會在小型計畫完成時才會成功。 好消息是,許多企業已經擁有大量可用的業務和 IT 資料,可以將這些資料輸入AI和機器學習演算法中。 所以,企業可以立刻開始。 但首先,他們需要選擇一個平台或工具。
這一類的工具或解決方案,在目前市面上非常的多。不論是三大公有雲的原生方案或是第三方廠商都有。問題在於企業要如何選擇這些工具呢?第一個是該工具能夠使用API的方式與雲端平台達到良好的整合,如此才能從多個雲端平台的各個層面中收集資料,從Application、Infra到Security。
本質上,所有這些工具是有層次性的。 各層次如下圖所示:
大多數 AIOps系統將不同層次中的一組工具組合到一個 AIOps 平台中,該平台可以處理 AIOps 的各個面向。每一家廠商的AIOps解決方案都有它們獨特的主打功能與能力,這是企業在評估AIOps解決方案需要注意的。每一家企業到底適合用哪一家的解決方案完全取決於該企業現在與未來的需求。
但重點是,這一些AIOps解決方案都要能夠及時的主動發現在環境中的任何問題並且能夠預測對IT環境中的任何組件有可能發生的影響,如同我們在CI/CD pipeline運行中會對IT環境發生的影響一樣。