運維智慧化的三大關鍵技術

語言: CN / TW / HK

以往基礎設施運維管理(ITOM)、配置管理資料庫、網路效能監控系統和應用效能監控系統的建設有相對標準化的產品作為基礎,也有方法學作為參考。相比之下,應用智慧運維繫統更貼近企業多樣化的應用系統、業務流程和使用者場景,沒有開箱即用的工具平臺和普遍適用的方法學參考。因此,其對擴充套件性和可定製化能力的要求較高,往往需要針對特定場景定製智慧化演算法,對團隊的技術能力要求較高。

應用智慧運維是在現有的應用效能管理系統、日誌分析系統等的基礎上,圍繞使用者場景和業務目標自動融合資料、智慧化提取資訊的過程。其通過規則積累指定應用運維經驗,通過演算法替代運維專家的邏輯思考,為發現風險、定位風險和處理風險提供了決策支援。

落地智慧化的運維演算法難度較大,解決實際應用場景問題,要求應用運維團隊不但要有應用效能工程、APM、應用鏈路追蹤、日誌分析等傳統運維技術,還要有大資料儲存、索引、清洗、統計等方面的經驗,能夠熟練使用機器學習和人工智慧演算法。企業需要在建設前期積累的關鍵技術能力有以下三部分。

1、資料採集

資料是實現精準預測、異常檢測和根源問題定位分析演算法的基礎,沒有覆蓋全面、高質量、高精度的監控資料,再精妙的演算法也很難發揮作用。圍繞業務部門對服務質量目標保障的需求,要覆蓋應用全鏈路的監控資料,就需要更豐富的監控資料採集手段。要達到監控範圍涵蓋應用從使用者端到服務端的執行期狀態、資料採集能力支援從基礎設施到上層應用全棧軟硬體的效果,需要解決使用者數字體驗與終端裝置監控、業務流程及系統可用性檢測、網路狀態監控、程式碼執行鏈路追蹤、日誌分析及標準化協議/介面對接等技術問題。目前,常用的覆蓋從使用者端到服務端的軟體及基礎設施的資料採集技術主要有以下幾種。

  • 使用者數字體驗與終端裝置監控。採集 B/S 架構下的應用 Web 頁面與使用者互動的使用者數字體驗指標資料,主要利用頁面植入 JavaScript 探針技術實現。對於移動終端應用,需要在開發階段通過 SDK 程式碼埋點的方式,在關鍵程式碼執行鏈路上插入監控程式碼,監控使用者的使用習慣和指定業務流程。目前,主流的 APM 產品和工具均能提供這種能力。

  • 業務流程及系統可用性檢測。通過配置指令碼定時或隨機撥測關鍵業務流程、頁面和介面的方式來主動檢測應用的可用性。在系統沒有使用者使用或系統上線初期,這樣做能夠主動發現服務假死、應用或獨立部署的服務節點意外宕機、介面呼叫效能異常等問題。常用工具有用於模擬使用者操作以檢測業務流程可用性的 Selenium、撥測頁面和介面的 SaaS 雲服務“site 24x7”、開源專案 Blackbox 等。

  • 網路狀態監控。這是一種基於旁路映象網路流量、通過探針被動偵聽網路包原理分析應用在網路層互動動作的監控方式。其通過拆包分析網路資料包,可以獲得網路互動效能、網路協議型別和應用業務操作過程等資訊。由於是被動偵聽,當遇到應用異常或網路通道加密時,其很難拿到有用資訊。這類工具和產品統稱為網路效能管理工具。

  • 程式碼執行鏈路追蹤。獲取分散式事務執行過程和應用伺服器的程式碼執行鏈路資料是 APM 平臺的核心能力,其主要原理是採用獨立於程式外的代理(Agent)來監聽程式執行過程。對分散式系統的程式碼執行鏈路追蹤監控的原理,來自 Google 大規模分散式系統的跟蹤系統 Dapper。

  • 日誌分析。應用執行期日誌是定位分析故障的重要資訊來源相比之下,監聽分析日誌檔案中的資料是獲取應用執行期狀態更簡單、直接的方式。近幾年,Splunk、Elastic、Sumologic 等用於日誌提取、分析的產品/服務廠商推動了海量日誌採集、儲存、分析及視覺化技術的快速發展。

  • 標準先協議/介面對接。通過標準化協議/介面採集監控資料是最基本的監控資料獲取方式,常用協議有面向 Windows 作業系統的 WMI 和 JMX Java 虛擬機器的執行狀態監控管理協議、簡單網路管理協議(SNMP),以及網路監測匯出協議 sFlow、NetFlow 等。

2、資料儲存

常用的監控資料分析技術處理的資料量較小,型別單一。例如,對於時間序列指標資料,常用 RRD 資料庫或時間序列資料庫對資料進行統計計算。計算型別大多是求最大值、最小值,求平均,找標準差及多指標聚合等。

對於日誌、使用者操作行為等半結構化的文字資料,可以用 ElasticSearch 等文字索引工具對海量文字資料進行索引,利用類 SQL 語句提取關鍵資訊欄位。

對於程式碼呼叫鏈路,尤其是分散式事務處理的程式碼鏈路,需要對海量資料按預先注入的 TraceID、SpanID 進行關聯,由於鏈路層級深度不確定,用關係資料庫連線處理就是災難。採用 Apache Solr、ElasticSearch 這類文字索引檢索引擎,需要佔用大量的記憶體來建立索引,對計算和記憶體的壓力將非常大,也不合適。最適合的資料庫是 HBase、Cassandra 等,其能夠由指定 ID 快速檢索出相關資料,並拼接出完整的鏈路。

不同資料儲存方式的實現原理不同,核心能力也有差別。為了支撐上層多樣化資料的統計分析、檢索,需要綜合利用各資料庫的優勢。

3、資料分析

海量運維大資料分析是實現應用智慧運維的關鍵。如果把監控資料比作石油,資料分析就是從石油中提煉適用於不同應用場景的汽油、柴油、重油、瀝青、潤滑油的過程。需求不同,對石油提煉的過程和工藝大相徑庭。同樣,監控資料採集上來,未經加工,本著發現風險和異常的原則來看,這些資料大部分都是正常狀態的無用資料,價值密度很低,可讀性很差,因此稱為“狀態裸資料”。

資料採集層通過資料預處理和格式轉換(通常預定義為 XML Schema、JSON Schema 等元資料格式)將這些資料轉化為格式化資料,推送到資料儲存平臺儲存。

集中儲存的監控大資料經過清洗、過濾、預處理等操作進一步提升了價值密度,轉換成資訊輸入資料,用於統計分析。常用的資料分析技術包括異常檢測、指標關聯分析、趨勢預測、因果分析等,用這些技術對資訊進行深度加工,可找出支援運維和運營決策及採取下一步動作的資訊。