IoT日志利器:嵌入式日志客户端(C Producer)发布
摘要: 2017年12月19日至20日,2017云棲大會·北京峰會在國家會議中心召開,飛天智能是貫穿云棲大會不變的主題,云計算、大數據、人工智能、物聯網等熱門話題備受各方關注。其中阿里云日志服務發布的嵌入式日志采集客戶端(C Producer Library) 就是其中解決物聯網日志采集、分析難的利器。
2017年12月19日至20日,2017云棲大會·北京峰會在國家會議中心召開,飛天智能是貫穿云棲大會不變的主題,云計算、大數據、人工智能、物聯網等熱門話題備受各方關注。其中阿里云日志服務發布的嵌入式日志采集客戶端(C Producer Library) 就是其中解決物聯網日志采集、分析難的利器。
背景
IoT(Internet of Things)正在高速增長,越來越多設備開始逐步走進日常生活(例如智能路由器、各種電視棒、天貓精靈、掃地機器人),讓我們體驗到智能領域的便利。距Gartner預測,到2020年末預計會有200億智能設備,可見該領域的巨大市場。
作為IoT/嵌入式工程師,除了需要深厚的開發功底外,面對海量的設備,如何有能力管理、監控、診斷這些“黑盒”設備至關重要。我們總結了嵌入式開發需求,主要有以下幾點:
數據采集:如何實時采集分散在全球各地的百萬/千萬級設備上的數據?
調試:如何使用一套方案既滿足線上數據采集以及開發時的實時調試?
線上診斷:某個線上設備出現錯誤,如何快速定位設備,查看引起該設備出錯的上下文是什么?
監控:當前有多少個設備在線?工作狀態分布如何?地理位置分布如何?出錯設備如何實時告警?
數據實時分析:設備產生數據如何與實時計算、大數據倉庫對接,構建用戶畫像?
思考以上問題的解決方案,我們發現在傳統軟件領域那一套手段面臨IoT領域基本全部失效,主要挑戰來自于IoT設備這些特點:
數目多:在傳統運維領域管理1W臺服務器屬于一家大公司了,但10W在線對于IoT設備而言只是一個小門檻
分布廣:硬件一旦部署后,往往會部署在全國、甚至全球各地
黑盒:難以登陸并調試,大部分情況屬于不可知狀態
資源受限:出于成本考慮,IoT設備硬件較為受限(例如總共只有32MB內存),傳統PC領域手段往往失效
針對不同端的數據采集
日志服務(原SLS) 客戶端Logtail在X86服務器上有百萬級部署,可以參見文章:Logtail技術分享 : 多租戶隔離技術+雙十一實戰效果,Polling + Inotify 組合下的日志保序采集方案。除此之外我們還有以下幾種方式:
移動端SDK:Android/IOS平臺數據采集,一天已有千萬級DAU
Web Tracking(JS):類似百度統計,Google Analytics 輕量級采集方式,無需簽名
在IoT領域,我們從多年Logtail的開發經驗中,汲取其中精華的部分,并結合IoT設備針對CPU、內存、磁盤、網絡、應用方式等特點,開發出一套專為IoT定制的日志數據采集方案:C Producer
C Producer特點
C Producer Library 繼承Logtail穩定、邊界特點,可以定位是一個“輕量級Logtail”,雖沒有Logtail實時配置管理機制,但具備除此之外70%功能,包括:
提供多租戶概念:可以對多種日志(例如Metric,DebugLog,ErrorLog)進行優先級分級處理,同時配置多個客戶端,每個客戶端可獨立配置采集優先級、目的project/logstore等
支持上下文查詢:同一個客戶端產生的日志在同一上下文中,支持查看某條日志前后相關日志
并發發送,斷點續傳:支持緩存上線可設置,超過上限后日志寫入失敗
還有一些專門為IoT準備功能,例如:
本地調試:支持將日志內容輸出到本地,并支持輪轉、日志數、輪轉大小設置
細粒度資源控制:支持針對不同類型數據/日志設置不同的緩存上線、聚合方式
日志壓縮緩存:支持將未發送成功的數據壓縮緩存,減少設備內存占用
功能優勢
C-Producer是量身為IoT定制的方案,因此會有一些特定考慮:
客戶端高并發寫入:可配置的發送線程池,支持每秒數十萬條日志寫入,詳情參見性能測試
低資源消耗:每秒20W日志寫入只消耗70% CPU;同時在低性能硬件(例如樹莓派)上,每秒產生100條日志對資源基本無影響
客戶端日志不落盤:既數據產生后直接通過網絡發往服務端
客戶端計算與 I/O 邏輯分離:日志異步輸出,不阻塞工作線程
支持多優先級:不通客戶端可配置不同的優先級,保證高優先級日志最先發送。
本地調試:支持設置本地調試,便于您在網絡不通的情況下本地測試應用程序。
在以上場景中,C Producer Library 會簡化您程序開發的步驟,您無需關心日志采集細節實現、也不用擔心日志采集會影響您的業務正常運行,大大降低數據采集門檻。
為了有一個感性認識,我們對C-Producer 方案與其他嵌入式采集方案做了一個對比,如下:
整體解決方案
C-Producer + 日志服務可以給IoT帶來什么?答案是:IoT日志解決方案:
規模大
支持億級別客戶端實時寫入
支持 PB/Day 數據量
速度快
采集快:0延遲:寫入0延遲,寫入即可消費
查詢快:一秒內,復雜查詢(5個條件)可處理10億級數據
分析快:一秒內,復雜分析(5個維度聚合+GroupBy)可聚合億級別數據
對接廣
與阿里云各類產品無縫打通
各種開源格式存儲、計算、可視化系統完美兼容
如何使用
一個應用可創建多個producer,每個producer可包含多個client,每個client可單獨配置目的地址、日志level、是否本地調試、緩存大小、自定義標識、topic等信息。
參見github地址
性能測試
環境配置:傳統X86服務器,樹莓派(低功耗環境),配置分別如下:
C-Producer配置
ARM(樹莓派)
緩存:10MB
聚合時間:3秒 (聚合時間、聚合數據包大小、聚合日志數任一滿足即打包發送)
聚合數據包大小:1MB
聚合日志數:1000
發送線程:1
自定義tag : 5
X86
緩存:10MB
聚合時間:3秒 (聚合時間、聚合數據包大小、聚合日志數任一滿足即打包發送)
聚合數據包大小:3MB
聚合日志數:4096
發送線程:4
自定義tag : 5
?
日志樣例
10個鍵值對,總數據量約為600字節
9個鍵值對,數據量約為350字節
測試結果
X86平臺結果
C Producer可以輕松到達90M/s的發送速度,每秒上傳日志20W,占用CPU只有70%,內存140M
服務器在200條/s,發送數據對于cpu基本無影響(降低到0.01%以內)
客戶線程發送一條數據(輸出一條log)的平均耗時為:1.2us
樹莓派平臺結果
在樹莓派的測試中,由于CPU的頻率只有600MHz,性能差不多是服務器的1/10左右,最高每秒可發送2W條日志
樹莓派在20條/s的時候,發送數據對于cpu基本無影響(降低到0.01%以內)
客戶線程發送一條數據(輸出一條log)的平均耗時為:12us左右(樹莓派通過USB連接到PC共享網絡)
一些典型場景可以參見云棲論壇 和最佳實踐。
總結
以上是生活随笔為你收集整理的IoT日志利器:嵌入式日志客户端(C Producer)发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指云原生数据库 2.0,阿里云发布全新
- 下一篇: 火山引擎进军云市场,计划未来三年服务十万