本文檔主要介紹了如何基於SLS+OSS+DLA構建海量、低成本的日誌分析方案。
方案介紹
對於資料分析人員、開發人員或者營運人員而言,日誌資料對分析和診斷問題以及瞭解系統活動等有著非常重要的作用,日誌都是其工作過程中必不可缺的資料來源。為了節約成本,通常情況下日誌會被設定一定的儲存時間,此類日誌稱之為熱日誌。這種做法短期內可以滿足使用需求,但從長期來看,大量的歷史日誌被丟棄,在需要分析和查詢資料時,會出現資料丟失。
阿里雲從使用者角度出發,研發了一整套小而精的歷史日誌資料分析方案。利用阿里雲Log Service(Log Service,SLS)來投遞日誌和查詢熱日誌,利用阿里雲Object Storage Service服務(Object Storage Service,OSS)來持久儲存由SLS服務即時投遞的日誌,利用阿里雲雲原生資料湖分析(Data Lake Analytics,DLA)來分析儲存在OSS的日誌。方案架構如下圖所示:
該方案具有以下優勢:
- SLS是針對即時資料的一站式服務,在阿里集團經歷大量巨量資料情境錘鍊而成。提供日誌類資料擷取、智能查詢分析、消費與投遞等功能,全面提升海量Tlog和分析能力。SLS強大的日誌投遞能力,能夠從源頭對接各種類型的日誌格式,並且穩定地將日誌投遞到OSS。
- OSS低廉的儲存成本,能夠讓您的記錄檔儲存任意長的時間。搭載SLS構建低成本冷熱分離的儲存方案。
- DLA提供強大的分析能力,可以對投遞到OSS上的日誌按年、月、日進行多維度分區,提高日誌的命中率,降低掃描量,從而以極低的成本、極高的效能來完成巨量資料量歷史日誌分析。
實施步驟
假設您的應用服務部署在ECS叢集上,該叢集每台機器上的應用服務都會產生日誌資料,並通過SLS投遞日誌資料到OSS。通過DLA的元資訊發現功能,自動探索SLS投遞到OSS的日誌資料,然後進行資料查詢和分析。本文檔將以此為例,為您介紹詳細的實施步驟。
在開始實施步驟之前,您需要先完成以下準備工作:
- 在ECS伺服器上面類比服務日誌的產生。
- 在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寫入記錄檔。 - 執行命令-sudo crontab -e並在該命令中添加如下配置來運行指令檔gen-log.sh,組建記錄檔資料到/user/sls-crawler/full_type_logs/目錄。
* * * * * sleep 10; sh /user/sls-crawler/gen-log.sh
- 在ECS伺服器的目錄/user/sls-crawler/下定義一個指令檔gen-log.sh來產生日誌資料。
- 通過Logtail採集ECS伺服器上的日誌資料到Logstore。具體操作請參見使用分隔字元模式採集日誌。其中,ECS執行個體選擇步驟一中的ECS執行個體iZbp1d6epzrizknw2xq****,日誌直接選取步驟一中的日誌路徑/user/sls-crawler/full_type_logs/。配置完成後,請您耐心等待幾分鐘,您就可以在SLS的OSS投遞管理頁面,查看日誌資料是否成功接入。
- 將Log Service資料投遞到OSS。如何投遞,請參見建立OSS投遞任務(舊版)。其中,OSS Bucket配置為dla-crawler-hangzhou,OSS Prefix配置為sls-daily/shipper-json-full-type13。等待SLS的投遞任務啟動成功後,您可以在對應的OSS目錄查看投遞的日誌資料。
- 通過DLA的元資訊發現功能,自動探索SLS投遞到OSS的日誌資料,然後進行資料查詢和分析。具體操作請參見SLS的OSS投遞資料來源。其中,資料來源配置選擇手動選擇,logstore選擇sls-dla-logstore。