閱讀212 返回首頁    go 英雄聯盟


關鍵組件和流程__產品簡介_業務實時監控服務 ARMS-阿裏雲

本文介紹 ARMS 中使用到的關鍵組件和流程。

ARMS 中的關鍵組件介紹

在 ARMS 中,最重要的任務流程和術語由下圖所表示:

task-workflow

其中:

  • 數據源: ARMS獲取數據的地方,目前主要主持ECS上的日誌抓取。以後會支持其他如MQ, DRDS,等。
  • 監控任務: 一個任務代表ARMS從數據抓取,數據處理,數據存儲到結果展示和導出的一個實例。
  • 數據集:代表一個監控業務的數據結果,其結果可以被OpenAPI導出。數據集直接被報表控件和報警規則依賴。
  • 報表控件:基於數據集的一個用於展示的報表控件。
  • 報警規則:定義了如何從既有數據集中產生報警。

ARMS 中的關鍵流程介紹

在ARMS中,最關鍵的流程是定義監控任務。通過頂一個監控任務,可以利用數據源產生一些列的監控結果,包括生成數據集,報表空間和報警規則。

下圖說明了創建一個任務所需要的大致流程和組件,以及組件在 ARMS 技術架構中的依賴方式。

task_arch_work_flow

下文對任務組件作簡要說明。

  • 采集規則(必選): 定義數據如何從不同的數據源實例進行采集。
  • 清洗邏輯(必選): 定義如何解析采集到的數據。
  • 數據集配置(必選): 通過配置數據集來定義任務如何基於采集到的數據做聚合計算,持久化存儲,以及 Open API 訪問輸出。
  • 報表控件(可選): 基於數據集提供可視化展示功能。
  • 報警通知(可選): 基於數據集,通過定義報警含義和通知方式,提供報警能力。
  • 大盤(可選): 通過集成報表空間和報警通知數據,對用戶提供可視化大盤能力。

監控任務

在 ARMS 中,監控任務主要分為兩大類。

  • 預定義任務:如”異常堆棧監控”,”商品銷售量統計”,等。通過創建這類任務,用戶通過直接使用預定義的清洗邏輯、數據集、報表控件的組件,可快速組裝出一個針對特定場景的監控任務。

  • 定製任務:在這裏任務中,用戶需要根據提示步驟,一步步手動定製任務的各類組件,組裝出一個完整監控任務。

用戶創建了監控任務後可在相應的任務管理界麵進行管理。除了查看、刪除以外,還可以針對監控任務進行起停操作。任務隻有被啟動的時候ARMS才會進行數據采集、計算和存儲數據。當任務被停止的時候,以上工作也會被停止。

采集規則

采集規則定義了數據如何從數據源實例中進行采集。用戶隻能基於已定義的數據源進行采集規則建立。其中,

  • ECS 數據源:用戶需要采集數據的 ECS 服務器或者服務器分組,以及對應的采集數據的日誌路徑,等。
  • Loghub 數據源:直接選取對應的project / logstore id即可。
  • API 數據源:直接選取對應API數據源 id 即可。
  • 其他數據源:敬請期待。

數據清洗

每個監控任務對應一個清洗邏輯。清洗邏輯定義如何解析采集到的數據。對於文本類數據,ARMS 支持多種數據清洗方式。例如:

  • 通過特定分隔符如”|”,”=”對數據進行清洗,從而清洗出不同的 Key-Value (KV)。一個極簡的例子包括:”itemID=abc|amount=100”的數據日誌會被清洗成 itemID 為 String “abc”, amount 為 int 100, 一共兩組Key-Value。
  • 亦支持基於 Jason 格式的數據,通過解析 Hash 數據結構清洗出不同的KV。
  • 亦或支持用戶自定義的清洗邏輯,如基於不同清洗符的清洗嵌套,等。

數據集配置

數據集是 ARMS 中實時監控數據計算和持久化的重要概念。一個監控任務可對於一個或多個數據集。

數據集的創建

在定義了清洗邏輯以後,通過以下方法定義數據集:

  • 直接創建:創建一個數據集,並定義其維度(Open API 查詢 Key),統計值(Value)。
  • 間接創建:通過創建一個報表控件並定義控件要展示的值和維度,或通過創建一個報警通知並定義要監控的值和維度,來間接創建一個數據集。

數據集與實時計算邏輯和數據導出格式

無論使用直接創建還是間接創建,當創建了一個數據集以後,定義的維度(Key)和統計值(Value)將直接決定數據在 ARMS 中如何進行實時計算,以及其 Open API 的查詢參數組合和返回值方式。一個極簡單的例子,例如某電商想統計各類商品的各個時刻的實時銷售額,用於實時展示和事後統計。其設計的統計的維度和統計值為:

  • 其查詢維度為時間(TimeStamp)和商品類目ID(String)。
  • 統計值為銷售額(Sum(Int))。

那麼:

  • 首先,在實時計算中,ARMS 在後麵的 JStorm 引擎中會針對大量的輸入數據作基於時間和商品類目 ID 作類似於 Reduce 的計算,在計算中對銷售額做Sum操作。
  • 計算後的結果,根據聚合粒度實時在存儲層中持久化。其對應的查詢 Open API 中的必選查詢 Key 為時間和銷售類目 ID,返回的 Int 值表示製定時刻和商品類目的銷售總額。

數據集的聚合粒度和保存周期

用戶在進行數據集配置時,可定義其聚合的粒度,例如1分鍾聚合一次還是1小時聚合一次,以及響應的數據的保存周期。一個數據集的聚合粒度和保存周期設置將直接影響其在 ARMS 的持久化存儲層的存儲容量。例如對於大多數場景,您可能想定義以下聚合和保存的方式組合。這樣既可以保證最近時刻的數據精確性,又可以滿足長期的統計工作需求,而且還最大限度利用了空間。

  • 1分鍾的數據聚合頻率,保存7天。
  • 1小時的數據聚合頻率,保存30天。
  • 1天的數據聚合頻率,保存3年。

在您配置了數據集以後,可以通過數據集管理界麵對數據集進行管理,包括啟動/停止操作。

  • 數據集啟動操作將保證在對應任務啟動時,對應的計算將被執行且結果持久化到存儲層。
  • 數據集停止操作將使數據集即便其對應的任務在啟動時,對應的計算不會被執行。數據集停止期間未被處理的數據流亦無法被回溯執行。

報表控件

用戶可以直接創建一個報表控件,或者基於一個現有的數據集創建一個報表控件(敬請期待)。

目前ARMS支持的報表空間種類如下:

widget-type

報警規則

用戶可以直接創建一個報警規則,或者基於一個現有的數據集創建一個報警規則(敬請期待)。

報警規則是對一個現有數據集的處理定義,包括

  • 需要判斷的指標閾值
  • 超過閾值後的處理規則,等。

最後更新:2016-11-23 16:04:16

  上一篇:go 技術架構__產品簡介_業務實時監控服務 ARMS-阿裏雲
  下一篇:go 發布版本__產品簡介_業務實時監控服務 ARMS-阿裏雲