本文檔主要介紹了如何基于SLS+OSS+DLA構建海量、低成本的日志分析方案。

方案介紹

對于數據分析人員、開發人員或者運維人員而言,日志數據對分析和診斷問題以及了解系統活動等有著非常重要的作用,日志都是其工作過程中必不可缺的數據來源。為了節約成本,通常情況下日志會被設定一定的保存時間,此類日志稱之為熱日志。這種做法短期內可以滿足使用需求,但從長期來看,大量的歷史日志被丟棄,在需要分析和查詢數據時,會出現數據丟失。

阿里云從用戶角度出發,研發了一整套小而精的歷史日志數據分析方案。利用阿里云日志服務(Log Service,SLS)來投遞日志和查詢熱日志,利用阿里云對象存儲服務(Object Storage Service,OSS)來持久存儲由SLS服務實時投遞的日志,利用阿里云云原生數據湖分析(Data Lake Analytics,DLA)來分析存儲在OSS的日志。方案架構如下圖所示:方案架構圖
該方案具有以下優勢:
  • SLS是針對實時數據的一站式服務,在阿里集團經歷大量大數據場景錘煉而成。提供日志類數據采集、智能查詢分析、消費與投遞等功能,全面提升海量日志處理和分析能力。SLS強大的日志投遞能力,能夠從源頭對接各種類型的日志格式,并且穩定地將日志投遞到OSS。
  • OSS低廉的存儲成本,能夠讓您的日志文件存儲任意長的時間。搭載SLS構建低成本冷熱分離的存儲方案。
  • DLA提供強大的分析能力,可以對投遞到OSS上的日志按年、月、日進行多維度的分區,提高日志的命中率,降低掃描量,從而以極低的成本、極高的性能來完成大數據量歷史日志分析。

實施步驟

假設您的應用服務部署在ECS集群上,該集群每臺機器上的應用服務都會產生日志數據,并通過SLS投遞日志數據到OSS。通過DLA的元信息發現功能,自動發現SLS投遞到OSS的日志數據,然后進行數據查詢和分析。本文檔將以此為例,為您介紹詳細的實施步驟。

在開始實施步驟之前,您需要先完成以下準備工作:
  • 準備一臺ECS服務器,用于產生實時日志數據。或者準備一臺已有日志數據的ECS。
  • 開通日志服務、創建Project和Logstore。具體請參見快速入門。假設Project為sls-oss-dla-test,Logstore為sls-dla-logstore
  • 已經在OSS服務上創建存儲空間。具體請參見控制臺創建存儲空間
  • 開通數據湖分析服務
  1. 在ECS服務器上面模擬服務日志的產生。
    1. 在ECS服務器的目錄/user/sls-crawler/下定義一個腳本文件gen-log.sh來產生日志數據。
      cat gen-log.sh 
      #/bin/sh
       filename=abc_`date +%s`.txt
      echo ${filename}
      for i in  {1..1000000}
         do
              datatimestr=`date '+%Y-%m-%d %H:%M:%S'`
              echo  "111111|1|100000000|0.1|0.0000000000001|true|aabb|valueadd" >>/user/sls-crawler/full_type_logs/${filename}
         done
      說明 在實際業務場景中,用戶自己的應用服務器會產生日志文件,或者直接通過SLS的API寫入日志文件。
    2. 執行命令-sudo crontab -e并在該命令中添加如下配置來運行腳本文件gen-log.sh,生成日志數據到/user/sls-crawler/full_type_logs/目錄。
      * * * * * sleep 10; sh /user/sls-crawler/gen-log.sh
  2. 通過Logtail采集ECS服務器上的日志數據到Logstore。具體操作請參見使用分隔符模式采集日志
    其中,ECS實例選擇步驟一中的ECS實例iZbp1d6epzrizknw2xq****,日志路徑選擇步驟一中的日志路徑/user/sls-crawler/full_type_logs/
    配置完成后,請您耐心等待幾分鐘,您就可以在SLS的OSS投遞管理頁面,查看日志數據是否成功接入。OSS投遞管理
  3. 將日志服務數據投遞到OSS。如何投遞,請參見創建OSS投遞任務(舊版)
    其中,OSS Bucket配置為dla-crawler-hangzhou,OSS Prefix配置為sls-daily/shipper-json-full-type13
    等待SLS的投遞任務啟動成功后,您可以在對應的OSS目錄查看投遞的日志數據。
  4. 通過DLA的元信息發現功能,自動發現SLS投遞到OSS的日志數據,然后進行數據查詢和分析。具體操作請參見SLS的OSS投遞數據源
    其中,數據源配置選擇手動選擇,logstore選擇sls-dla-logstore