系列文章:
- IOT/智能裝置日志解決方案(1):概述
- IOT/智能裝置日志解決方案(2):全方位資料采集
- IOT/智能裝置日志解決方案(3):上下遊對接
- IOT/智能裝置日志解決方案(4):計算與分析
- IOT/智能裝置日志解決方案(5):線上問題調查
- IOT/智能裝置日志解決方案(6):實時監控
- IOT/智能裝置日志解決方案(7):搭建業務大盤
前言
2017年被業界稱為物聯網(IOT)元年,而未來IOT還将繼續高歌猛進。IDC預測全世界在IOT的開支在2018年預計至7725億美金,相比2017年的6740億美金有14.6%的上漲。IDC全球半年度IOT開銷指南預估在2017年~2021年間全球iOT開支保持在14.4%的CAGR(年複合增長率)在2020年超過1萬億美金,且在2021年達到11000億美金。愛立信最新釋出的資料顯示,到2020年預計會有500億件裝置互聯。麥肯錫預測,到2025年,物聯網将帶來高達11萬億美元的年度儲蓄和新收入。
下面我們再來看看智能裝置:2017年,全球智能家居裝置出貨量達4.331億台,比上一年增長27.6%。展望未來,IDC預計2022年市場出貨量達到9.397億台,預計複合年增長率(CAGR)将達18.5%。
無論是物聯網還是智能裝置,規模都越來越大,産業分工也越來越明确,逐漸形成一整套的生态系統。而同時無論是物聯網還是智能裝置的生态系統中,日志資料永遠是不可缺少的一個重要環節。
日志資料
首先我們需要明确:什麼是日志資料。日志并不僅僅是程式的Debug資料,此外還包括但不限于:使用者的記錄檔、計量計費資料、系統事件、傳感器資料、系統/應用名額資料、審計相關資料、調用鍊日志等等。
這麼多種類的日志,看似功能并不關聯,但從我們的最終目的來看,無論哪種類型的資料都必不可少。而這個最終的目的也非常的直白淺顯:回報(錢)。為了更高的回報,我們需要利用這些資料去分析使用者的行為,去進行更有效的營運政策,提高使用者粘性;更精準的廣告投放,提高廣告點選率;利用全方位的日志分析産品缺陷,進行産品優化和快速疊代...
日志解決方案
一個标準的日志解決方案主要包括以下幾個流程:
- 連接配接:連接配接主要分為裝置端(IOT/智能裝置)和服務端(伺服器以及服務端應用)的資料采集。資料采集需連接配接分布在全球各地的裝置和背景服務,并将裝置、服務端的各種類型日志資料統一采集到存儲端。為了便于上下遊對接,這個存儲端通常使用消息隊列作為中間的資料緩存。
- 計算:各類資料采集到消息隊列後,會進行多輪的計算工作,包括預處理、清洗、聚合等等,各輪的中間計算結果會繼續儲存到隊列中,用于下一輪次的輸入。同時計算的過程也可能由其他外部資料源的參與,例如記錄裝置meta資料的資料庫等。
- 監控:為了更快速的發現異常,需要對隊列中實時進入的資料進行監控,包括裝置狀态以及後端服務狀态。後端服務監控技術通常較為成熟,裝置端狀态的遠端監控時效性較難保證。
- 分析:當資料計算處理完成後,會進行一些線上和離線的分析,線上分析通常基于流計算實作,離線分析通常會進入數倉進行。
- 利用:最後也是最重要的部分是如何更好的利用這些資料以及分析的結果,包括:智能廣告推薦、使用者畫像建構、産品優化、商業決策支援等。最終這些結果會重新作用于裝置端,形成一個資料閉環。
IOT/智能裝置日志方案難點分析
搭建一個日志解決方案并不難,網絡上有很多開源日志解決方案。但其中有一些問題,尤其是針對IOT/智能裝置場景的問題難以解決,主要包括:
- 輕量級的日志用戶端:日志上傳需要在裝置端嵌入,通常使用SDK的方式。由于日志采集隻是系統中的的一個非核心業務子產品,對于資源的占用需盡可能的低,包括CPU、記憶體、網絡等。最關鍵的是日志采集SDK需要足夠的小,小到可以“塞”到各種各樣的裝置端。
- 全球資料采集網絡:對于一款消費級/工業級産品,裝置遍布全國/全球非常普遍,普通的資料采集網絡隻能依賴于公網,網絡鍊路品質很難得到保證,資料采集也會存在一定的延遲和不可靠因素。如何建立起一張全球采集加速的網絡對于裝置端日志資料采集的時效性和穩定性非常重要,但同時該項工作也需極大的資源投入。
- 資料時效性:資料采集的時效性一般是從日志産生到最終在服務端可檢索到的時間,通常的方案是資料到達隊列後,批量同步到數倉,一般需要1-2小時才能檢索到,最快也隻能到分鐘級。這種時效性對于問題的及時發現和排查存在很大困難。若資料幾秒内可見,則可做的優化就非常多了:裝置新版本釋出時,可快速發現問題并及時復原;客戶回報問題時,客服可基于資料查詢系統幫助使用者實時的排查問題;根據使用者目前的操作資訊實時推薦類似内容...
- 前後端一體化:日志采集不僅包括裝置端(前端),還包括後端(服務端)各類支撐應用的日志,這兩部分日志雖大有不同,但其中很多日志隻有前後關聯,才能形成完整的調用鍊分析。是以前後端日志的采集、處理、分析應歸于一體。
方案實作
![](https://yunlei-statics.cn-hangzhou.log.aliyuncs.com/logstores/blog-tracking/track_ua.gif?APIVersion=0.6.0&blog=IOT/智能裝置日志解決方案(1):概述&src= yunqi&author=davidzhang)
針對以上問題,我們專門推出了基于阿裡雲日志服務的IOT/智能裝置日志解決方案:
- 裝置端(IOT/智能裝置)和服務端的日志分别通過C Producer和Logtail統一采集到日志服務中。C Producer最低隻占用4KB記憶體;針對全球資料采集場景,日志服務專門提供了全球采集加速功能。
- 采集到日志服務的資料,使用Blink進行資料清洗和疊代計算。Blink支援從日志服務中讀取資料,處理完畢後還支援寫入日志服務,是以可組合使用Blink、日志服務進行多次的疊代計算。
- 對于清洗後的資料,可直接使用日志服務的統計分析功能進行實時的資料統計。同時日志服務還支援基于統計的結果快速建立報表以及告警,從用戶端産生資料到報表可見,延遲可控制在5秒内。
- 考慮到離線分析需要針對長時間範圍(數年)的資料進行統計,日志服務還支援将資料投遞到OSS、MaxCompute進行歸檔,便于後續的離線分析。