資料獲取管道是HTTP://www.aliyun.com/zixun/aggregation/28742.html">遠端監控解決方案的核心所在,後者是 Windows Azure 中雲服務基礎專案的一部分。 該管道是 Wiki 系列中第三篇文章的主題。 它在解決方案中的角色是從各個存儲庫中提取不同的資訊並將其聚合到一個關係資料庫。 之後可以將該資料庫用於關聯和分析捕獲指標的長期趨勢、深入到具體問題和事件,以及訂閱預定義和動態報表與儀表板(但是別急,這將是我們下一篇文章的主題)。 以下是一些可以通過該管道調查的示例問題,「客戶報告性能下降時,我的應用程式元件出現了什麼狀況? 」或「應用程式在 UTC 時間上午 12 點至下午 1 點之間產生逾時錯誤時,我的資料層發生了什麼變化? 」這些問題正是我們希望我們的端到端遠端監控解方案能夠解決的。
圖 1 - 資料獲取管道是整個遠端監控解決方案體系結構中的重點
從體系結構的角度來看,我們可以將資料獲取管道的設計細分為三個主要部分:
一個執行導入和轉換任務的可配置計畫程式引擎。 一組查詢各種資訊源、應用一些轉換邏輯並將結果推送到集中存儲庫的可擴展任務。 一個將這些資料存儲在常規關係架構中的 Windows Azure SQL 資料庫實例,可用於執行分析查詢並提取有意義的資訊。
實施計畫程式引擎時,我們決定採用「拉」的機制,按一定的時間間隔查詢各種資料來源。 採用這一方法而非更複雜的「推」和「流化」方法的原因有很多。 主要原因是,資料已經存儲在中間庫中,如 Windows Azure 存儲(存儲 Windows Azure Diagnostics 生成的資訊)或 Windows Azure SQL 資料庫內部資料結構(存儲動態管理檢視)。 我們對即時持續分析沒有嚴格的要求,我們也希望將實施過程儘量簡化。 在當前版本中,我們的計畫程式作為 Windows Azure worker role 進行實施,它可以從託管在 Windows Azure 存儲 Blob 容器中的 XML 檔讀取其配置。 該檔定義了要執行的計畫作業的數量和類型及其執行頻率,以及各資料來源和目標位置的所有配置選項與連接字串。 可以隨時更改設定檔,即添加或刪除任務或更改特定配置,worker role 將使用更新後的檔開始執行。 我們多次運行了此計畫程式元件的生產部署,與客戶及合作夥伴一起監控其解決方案。 我們發現,用一個「小型」VM部署此 worker role足以處理數百個目標計算實例和資料庫。
我們還實施了連接到兩個主要診斷源系列的多個導入任務:
Windows Azure Diagnostics (WAD) 生成的資料 通過 DMV 提供的 Windows Azure SQL 資料庫內部狀態
由於 WAD 將大多數資訊存儲在 Windows Azure 存儲表中,因此許多導入任務都非常相似。 它們主要使用Windows Azure Storage Client Library v2.0, 在給定時間範圍(從開始日期到結束日期)內查詢源表、應用一些即時篩選器(例如關鍵事件或錯誤事件)、重新動態設定或轉換資料行的格式, 並將新資訊批量複製到目標資料庫。 此類資訊包括 Windows Azure 計算節點效能計數器、Windows 事件日誌和跟蹤日誌,等等。 更加複雜的實施涉及通過 WAD 收集所有 Web role 中的 IIS 日誌,這些日誌存儲在以特定結構組織的 Blob 容器中。 為此,我們首先必須查詢表(其中包含對在特定時間範圍內生成的所有日誌檔的引用),然後在 worker role 本機存放區中下載這些 IIS 日誌檔以分析和提取有意義的資訊,如網頁和 API 回應時間。