閱讀260 返回首頁    go 人物


日誌清洗最佳實踐__最佳實踐_業務實時監控服務 ARMS-阿裏雲

ARMS中數據清洗的作用和功能

  • 為什麼要數據清洗

    ARMS向用戶提供低學習成本實時監控解決方案。不同用戶擁有不同的日誌格式,以及不同日誌的不同字段信息。ARMS為適配用戶日誌,需要先對用戶日誌進行數據清洗工作。

例如,一行日誌,包含日期格式,商品ID以及交易額,如下。

2016-08-24-13:32:33|itemID=abc|amount=100

通過日誌清洗,ARMS需要知道,在這行日誌中,時間為2016-08-24-13:32:33,商品ID為abc,以及交易額為100。通過清洗出以上屬性以後,ARMS就可以在後續聚合計算編排中,針對這些屬性進行相關場景的計算。

  • ARMS中智能切分和手動切分的區別

    ARMS抽象數據清洗過程為對日誌數據的切分,形成字段(時間、字符串、數字等字段)。
    ARMS向用戶提供了兩種數據清洗模式:智能切分和手動切分。

    智能切分 —— 快速、便捷、智能
    智能生成數據清洗切分方案。對用戶提供的部分日誌樣例進行智能分析,並推薦最優方案供用戶選擇。智能切分方案可轉換為手動切分拖拽式界麵進行微調,大大節省手動切分配置時間。

    手動切分 —— 手動、全麵、可控
    通過拖拽式界麵配置數據清洗切分邏輯,全圖形化配置流程,不需要編寫代碼即可完成大部分的監控配置任務。

日誌格式主要建議

  • 盡量保證格式一致
    同一日誌源日誌盡量保證格式一致,若存在多種日誌在同一日誌源,需要使用filter功能過濾出需要的日誌內容。

  • 使用可以識別的時間戳
    ARMS支持多種常用時間格式: (需要精確到年月日時分秒,毫秒可選)

    手動切分中時間戳格式支持所有能轉化為常用SimpleDateFormat時間正則表達式(如yyyy-MM-dd HH:mm:ss)的時間格式,時間正則詳見SimpleDateFormat官方文檔說明

    智能切分能識別的時間格式:

    • 支持常見能轉化為常用SimpleDateFormat時間正則表達式(如 2016-8-21 23:12:53 等)的時間格式
    • 支持Ngix時間格式,如 28/Nov/2014:11:56:09 +0800
    • 支持其他Java SimpleDateFormat 常用格式 詳見智能切分時間格式說明文檔
  • 使用清晰無歧義的分隔符 (常用分隔符為 空格、”|”、”;”、”,”等)
    推薦使用同種類的分隔符,更容易被切分器切分。

  • 字串子串等更推薦使用JSON格式
    日誌串中含有JSON字串,使用JSON切分器處理,更易於數據清洗。
    日誌中JSON串需為有引號的標準JSON格式,且不能含有換行符。

自定義切分的幾種典型場景

  • 場景一:
    針對形如 “2016-08-24-13:32:33 WORD1 Key1: Value1 Key2= Value2” 的日誌串,
    這種有key但是切分符無規律的場景。
    推薦使用順序切分器,通過把無關字段按當成順序分隔符,切分取出剩餘需要的字段,效果如下圖圖例所示:
    順序切分圖例1
  • 場景二:
    針對形如 “2016-08-24-13:32:33 INFO ERR {“jsonKey1”:”jsonValue1”}” 的日誌串,
    這種日誌間主要字段有空格等單一切分符規律的場景。
    推薦首先使用單切分切分器,把被相同單一分隔符分割的子串切分出來,
    餘下字段再分別嵌套其他切分,如下圖圖例所示(後嵌套JSON串切分):
    單切分圖例1
  • 場景三: 針對形如 “Value1|Value2:Value3” 的日誌串,
    這種沒有key且切分符無規律的場景。
    推薦使用多分隔符切分器,對多種分隔符同時進行切分,取出切分剩餘字段,效果如下圖圖例所示:
    多切分圖例1
  • 場景四: 針對形如 “Key1:Value1 Key2:Value2 Key3:Value3” 的日誌串,
    這種有key且切分符有規律的KV日誌場景。
    推薦使用KV切分器,效果如下圖圖例所示:
    KV切分圖例1
  • 場景五: 針對標準JSON串場景
    推薦使用JSON切分器。

最後更新:2016-11-23 18:55:06

  上一篇:go ARMS Open API 說明__API 參考_業務實時監控服務 ARMS-阿裏雲
  下一篇:go 日誌清洗中關於時間字段date設置的常見問題與解決方法__最佳實踐_業務實時監控服務 ARMS-阿裏雲