閱讀889 返回首頁    go 微軟 go Office


雲棲大會Serverless場分享:日誌處理挑戰與展望

本文PPT來自於2017年雲棲大會TI Serverless專場阿裏雲龍悟分享的《Serverless下日誌處理的挑戰和展望》整理而成。

image

由於Serverless的諸多優點,現在越來越多的應用采用Serverless的架構,如上圖所示,一個典型的Serverless架構 :

  • Api網關作為用戶訪問的入口,是各類web、手機等客戶端的訪問入口
  • 應用的靜態資源如圖片、視頻等可放在對象存儲OSS上
  • 表格存儲保存各類meta信息
  • 函數服務FC承載應用的核心處理邏輯

在應用采用Serverless架構的情況下,已經沒有應用服務器,應用邏輯以事件為驅動進行觸發,這樣的改動對於應用的開發、運維、運營、客服都提出了更高的要求和不小的挑戰。通常來說,日誌數據對於一個應用來說至關重要,關係到應用的穩定,以及能否持續、健康發展。那麼在Serverless場景下,日誌數據處理又有哪些挑戰呢?

image
我們先看看搭建一個日誌處理平台有哪些挑戰:

  • 采集多源:是否能夠足夠高效地從各類數據源(web、手機客戶端,api網關、函數服務等)快速、方便、實時進行數據采集;
  • 運營管理成本:維護這樣一個日誌平台需要投入多少人力、時間、機器資源;
  • 響應速度: 對於開發、運維、運營、客服等人員,是否都可以方便、便捷地使用這個日誌平台來滿足各自多樣的需求

通常,構建一個完整的日誌平台,需要使用多種開源係統,其中典型的代表有kafka,elk,hadoop,spark,storm等,以及用於數據采集的各類agent(logstash,fluentd,beats等),這些軟件和係統用於解決特定的問題,隻有有機地把這些係統組合才來才能最終達到業務目標,但要能夠穩定運行好這些係統,可不是一件容易的事情。

image

阿裏雲的日誌服務提供了另外一種解決思路,以雲服務的形式,提供一站式日誌解決方案,集合日誌多源采集、存儲、實時分析和dashboard展示、數倉對接等豐富功能,來滿足多種人員的各類需求。這樣在即滿足需求的情況下,又免去了維護多個複雜係統的代價,大大降低了日誌分析的時間成本。

image
通過簡單的配置,一個日誌服務平台可以非常便捷地進行創建,按照我們的經驗,一個人1小時足夠了。
首先,我們看一下serverless應用下日誌如何進行采集:

  • 通過嵌入web tracking js代碼,可方便地采集客戶端的行為日誌;
  • 通過SDK,API網關的日誌、應用APP中的日誌實時將日誌寫入logstore中;
  • 產生在函數服務的日誌,通過一行配置,FC會自動將stdout的日誌采集至日誌服務中;

當日誌寫入用戶project的logstore之後,可以根據數據流量,進行秒級動態擴容、縮容。配置索引之後,各類人員可以直接使用。

接下來,我們以日誌處理中幾個通用場景為例,來說明如何方便地使用日誌服務解決實際問題。
image
在DevOps場景下,基於阿裏巴巴內部的使用經驗,我們將ops的時間進行劃分,其中最耗時的部分是問題調查,而問題調查往往需要從多個維度進行綜合的分析,才能準確定位問題的根源:

  • Metric : 各類係統、應用指標,常見的如cpu、mem指標,應用訪問延時等
  • AdHoc Query :各類條件組合進行的查詢,如查詢來之某個用戶的訪問正確率,某個頁麵的延時等
  • Tracing :對於單次訪問的一個完整調用路徑,通常可通過訪問request id在各個係統中進行關聯
  • Log、上下文 :詳細的日誌數據,以及和關鍵日誌有關聯的上下文日誌

以下,我們以DevOps下的AdHoc query和tracing、上下文為例來演示如何使用日誌服務:
image

首先,這個查詢樣例是, 某個用戶對某個特定頁麵進行訪問,出現錯誤或者延時超過1秒的請求情況。我們可以看到,這樣的查詢方式非常的靈活,可以對各種條件進行自由組合,通常會使用關鍵詞查詢、數值比較、模煳查詢來進行組合。使用阿裏雲日誌服務,日誌寫入1秒和即可查詢,每次查詢,在1秒內,可處理數億的日誌,從容應對海量日誌。

接下來,如果當有用戶反饋有訪問異常的情況下,就可以通過Tracing + 上下午的方式,快速進行定位。
image

演示視頻:

在這個視頻中,首先通過用戶的id找到錯誤的訪問請求(1);再根據這個request id快速在應用日誌中找到核心日誌(2),發現錯誤根本原因是後端緩存隊列已經滿了,不能請求進行更多的請求;通過核心日誌的上下文查詢功能,快瀏覽在出核心錯誤日誌上下文日誌(3),用於快速定位問題。

image
在介紹DevOps場景之後,我們再看一下運營分析的場景。在這個場景下,我們希望運營同學也能很方便地直接使用日誌平台進行問題的分析。比如,在進行一個推廣活動的時候,該主推哪些產品、主要麵向的用戶群體又是哪些等的這類問題,都需要從用戶瀏覽、購買等行為日誌中進行分析。在日誌服務平台上,通過簡單的sql分析配合多種模式的視圖展示,能非常直觀將展示分析的結果。

image
演示視頻:

在以上視頻樣例中,我們快速分析在一個網站上,售賣價格超過100元的商品中,訪問次數最高的top 10的商品,分析的結果以餅圖的形式來表示。日誌服務的sql查詢,支持了sql 92絕大部分語法功能,可在1秒內,對1億條日誌進行多個維度統計分析。

image
對於我們經常需要關注的核心指標,可將sql視圖保存至dashboard做整體展示,下次打開的時候,直接看到結果。同時,在這個dashboard的上,也可以調整任意視圖的時間段。

image
日誌服務平台,除了以上所展示的日誌實時query和sql分析功能外,也能直接和多個雲產品和開源係統對接,比如將數據導入對象存儲OSS或MaxCompute中進行歸檔和超大規模計算,通過Storm/Jstorm等流式係統可直接實時讀取寫入Logstore中的日誌數據。這樣可以更方便滿足多種個性化的日誌處理需求。

image
最後,我們對比一下,使用日誌服務一站式平台和自建方案之間的差異。使用日誌服務,可以極大降低硬件持有、係統運維、開發資源等多方麵的成本,同時,使用日誌服務的另一個好處是,在資源的彈性擴容、安全、權限管理上也有很大的優勢。整體來說,可以使用更低的費用,享受更好的服務。

最後更新:2017-10-30 15:33:40

  上一篇:go  睿雲智合(Wise2C)談論docker
  下一篇:go  WCF的Binding模型之五:綁定元素(Binding Element)