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

語言: 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 等元數據格式)將這些數據轉化為格式化數據,推送到數據存儲平台存儲。

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