IoT日誌利器:嵌入式日誌採集客戶端(C Producer)發佈

2017年12月19日至20日,2017雲棲大會·北京峯會在國家會議中心召開,飛天智能是貫穿雲棲大會不變的主題,雲計算、大數據、人工智能、物聯網等熱門話題備受各方關注。其中阿里雲日誌服務發佈的嵌入式日誌採集客戶端(C Producer Library) 就是其中解決物聯網日誌採集、分析難的利器。html

背景

IoT(Internet of Things)正在高速增加,愈來愈多設備開始逐步走進平常生活(例如智能路由器、各類電視棒、天貓精靈、掃地機器人),讓咱們體驗到智能領域的便利。距Gartner預測,到2020年底預計會有200億智能設備,可見該領域的巨大市場。git

image

做爲IoT/嵌入式工程師,除了須要深厚的開發功底外,面對海量的設備,如何有能力管理、監控、診斷這些「黑盒」設備相當重要。咱們總結了嵌入式開發需求,主要有如下幾點:github

  • 數據採集:如何實時採集分散在全球各地的百萬/千萬級設備上的數據?
  • 調試:如何使用一套方案既知足線上數據採集以及開發時的實時調試?
  • 線上診斷:某個線上設備出現錯誤,如何快速定位設備,查看引發該設備出錯的上下文是什麼?
  • 監控:當前有多少個設備在線?工做狀態分佈如何?地理位置分佈如何?出錯設備如何實時告警?
  • 數據實時分析:設備產生數據如何與實時計算、大數據倉庫對接,構建用戶畫像?
image

思考以上問題的解決方案,咱們發如今傳統軟件領域那一套手段面臨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網絡

image.png

C Producer特色

C Producer Library 繼承Logtail穩定、邊界特色,能夠定位是一個「輕量級Logtail」,雖沒有Logtail實時配置管理機制,但具有除此以外70%功能,包括:併發

  • 提供多租戶概念:能夠對多種日誌(例如Metric,DebugLog,ErrorLog)進行優先級分級處理,同時配置多個客戶端,每一個客戶端可獨立配置採集優先級、目的project/logstore等
  • 支持上下文查詢:同一個客戶端產生的日誌在同一上下文中,支持查看某條日誌先後相關日誌
  • 併發發送,斷點續傳:支持緩存上線可設置,超過上限後日志寫入失敗

還有一些專門爲IoT準備功能,例如:運維

  • 本地調試:支持將日誌內容輸出到本地,並支持輪轉、日誌數、輪轉大小設置
  • 細粒度資源控制:支持針對不一樣類型數據/日誌設置不一樣的緩存上線、聚合方式
  • 日誌壓縮緩存:支持將未發送成功的數據壓縮緩存,減小設備內存佔用

image.png

功能優點

C-Producer是量身爲IoT定製的方案,所以會有一些特定考慮:異步

image.png

  • 客戶端高併發寫入:可配置的發送線程池,支持每秒數十萬條日誌寫入,詳情參見性能測試
  • 低資源消耗:每秒20W日誌寫入只消耗70% CPU;同時在低性能硬件(例如樹莓派)上,每秒產生100條日誌對資源基本無影響
  • 客戶端日誌不落盤:既數據產生後直接經過網絡發往服務端
  • 客戶端計算與 I/O 邏輯分離:日誌異步輸出,不阻塞工做線程
  • 支持多優先級:不通客戶端可配置不一樣的優先級,保證高優先級日誌最早發送。
  • 本地調試:支持設置本地調試,便於您在網絡不通的狀況下本地測試應用程序。

在以上場景中,C Producer Library 會簡化您程序開發的步驟,您無需關心日誌採集細節實現、也不用擔憂日誌採集會影響您的業務正常運行,大大下降數據採集門檻。高併發

爲了有一個感性認識,咱們對C-Producer 方案與其餘嵌入式採集方案作了一個對比,以下:

image.png

總體解決方案

C-Producer + 日誌服務能夠給IoT帶來什麼?答案是:IoT日誌解決方案:

  • 規模大

    • 支持億級別客戶端實時寫入
    • 支持 PB/Day 數據量
  • 速度快

    • 採集快:0延遲:寫入0延遲,寫入便可消費

      • 查詢快:一秒內,複雜查詢(5個條件)可處理10億級數據
      • 分析快:一秒內,複雜分析(5個維度聚合+GroupBy)可聚合億級別數據
  • 對接廣

    • 與阿里雲各種產品無縫打通
    • 各類開源格式存儲、計算、可視化系統完美兼容

image.png

如何使用

一個應用可建立多個producer,每一個producer可包含多個client,每一個client可單獨配置目的地址、日誌level、是否本地調試、緩存大小、自定義標識、topic等信息。

image.png

性能測試

環境配置:傳統X86服務器,樹莓派(低功耗環境),配置分別以下:

image.png

C-Producer配置

  • ARM(樹莓派)

    • 緩存:10MB
    • 聚合時間:3秒 (聚合時間、聚合數據包大小、聚合日誌數任一知足即打包發送)
    • 聚合數據包大小:1MB
    • 聚合日誌數:1000
    • 發送線程:1
    • 自定義tag : 5
  • X86

    • 緩存:10MB
    • 聚合時間:3秒 (聚合時間、聚合數據包大小、聚合日誌數任一知足即打包發送)
    • 聚合數據包大小:3MB
    • 聚合日誌數:4096
    • 發送線程:4
    • 自定義tag : 5

日誌樣例

  1. 10個鍵值對,總數據量約爲600字節
  2. 9個鍵值對,數據量約爲350字節

測試結果

X86平臺結果

  • C Producer能夠輕鬆到達90M/s的發送速度,每秒上傳日誌20W,佔用CPU只有70%,內存140M
  • 服務器在200條/s,發送數據對於cpu基本無影響(下降到0.01%之內)
  • 客戶線程發送一條數據(輸出一條log)的平均耗時爲:1.2us

image.png

樹莓派平臺結果

  • 在樹莓派的測試中,因爲CPU的頻率只有600MHz,性能差很少是服務器的1/10左右,最高每秒可發送2W條日誌
  • 樹莓派在20條/s的時候,發送數據對於cpu基本無影響(下降到0.01%之內)
  • 客戶線程發送一條數據(輸出一條log)的平均耗時爲:12us左右(樹莓派經過USB鏈接到PC共享網絡)

image.png

一些典型場景能夠參見雲棲論壇最佳實踐

相關文章
相關標籤/搜索