全部產品
Search
文件中心

Simple Log Service:採集-IoT/嵌入式日誌

更新時間:Jun 30, 2024

IoT(Internet of Things)正在高速增長,越來越多裝置開始逐步走進日常生活,例如智能路由器、各種電視棒、天貓精靈、掃地機器人等,讓我們體驗到智能領域的便利。傳統軟體領域的嵌入式開發模式在IoT裝置領域的應用遇到了很多挑戰,IoT裝置數目多、分布廣,難以調試且硬體受限,傳統的裝置日誌解決方案無法完美滿足需求。

Log Service團隊結合IoT裝置的特點,為IoT裝置量身定製一套日誌資料擷取方案:C Producer。

日誌資料擷取方案

嵌入式開發需求

作為IoT/嵌入式工程師,除了需要深厚的開發功底外,面對海量的裝置,如何有能力管理、監控、診斷黑盒裝置至關重要。嵌入式開發需求主要有以下幾點:

  • 資料擷取:如何即時採集分散在全球各地的百萬/千萬級裝置上的資料?
  • 調試:如何使用一套方案既滿足線上資料擷取又滿足開發時的Just-in-Time 偵錯?
  • 線上診斷:某個線上裝置出現錯誤,如何快速定位裝置,查看引起該裝置出錯的上下文是什嗎?
  • 監控:當前有多少個裝置線上?工作狀態分布如何?地理位置分布如何?出錯裝置如何即時警示?
  • 資料即時分析:裝置產生資料如何與Realtime Compute、巨量資料倉庫對接,構建使用者畫像?
嵌入式開發需求

IoT領域面臨的主要挑戰

思考以上問題的解決方案,我們發現在傳統軟體領域那一套手段面臨IoT領域基本全部失效,主要挑戰來自於IoT裝置這些特點:

  • 裝置數目多:在傳統營運領域管理1萬台伺服器屬於一家大公司了,但10萬線上對於IoT裝置而言只是一個小門檻。
  • 分布廣:硬體一旦部署後,往往會部署在全國、甚至全球各地。
  • 黑盒:難以登入並調試,大部分情況屬於不可知狀態。
  • 資源受限:出於成本考慮,IoT裝置硬體較為受限(例如總共只有32MB記憶體),傳統PC領域手段往往失效。

C Producer

Log Service量身定製的日誌資料擷取解決方案。

Log Service用戶端Logtail在X86伺服器上有百萬級部署,可以參見文章:Logtail技術分享:,。除此之外,Log Service提供多樣化的採集方案:

  • 移動端SDK:Android/IOS平台資料擷取,一天已有千萬級DAU。
  • Web Tracking(JS):類似百度統計,Analytics輕量級採集方式,無需簽名。

Log Service團隊結合IoT裝置的特點,為IoT裝置量身定製一套日誌資料擷取方案:C Producer。

採集解決方案

C Producer特點

C Producer Library繼承Logtail穩定、高效能、低資源消耗等特點,可以定位是一個輕量級Logtail,雖沒有Logtail即時組態管理機制,但具備除此之外70%功能,包括:

  • 提供多租戶概念:可以對多種日誌(例如Metric,DebugLog,ErrorLog)進行優先順序分級處理,同時配置多個用戶端,每個用戶端可獨立配置採集優先順序、目標Project和Logstore等。
  • 支援上下文查詢:同一個用戶端產生的日誌在同一上下文中,支援查看某條日誌前後相關日誌。
  • 並發發送,斷點續傳:支援緩衝上限可設定,超過上限後日誌寫入失敗。

此外,C Producer還具備以下IoT裝置專享功能,例如:

  • 本地調試:支援將日誌內容輸出到本地,並支援輪轉、日誌數、輪轉大小設定。
  • 細粒度資源控制:支援針對不同類型資料/日誌設定不同的緩衝上限、彙總方式。
  • 日誌壓縮緩衝:支援將未發送成功的資料壓縮緩衝,減少裝置記憶體佔用。
C Producer特點

功能優勢

C Producer作為IoT裝置的量身定製方案,在以下方面具備明顯優勢:

功能優勢
  • 用戶端高並發寫入:可配置的發送線程池,支援每秒數十萬條日誌寫入,詳情參見效能測試。
  • 低資源消耗:每秒20萬日誌寫入只消耗70%CPU;同時在低效能硬體(例如樹莓派)上,每秒產生100條日誌對資源基本無影響。
  • 用戶端日誌不落盤:既資料產生後直接通過網路發往服務端。
  • 用戶端計算與I/O邏輯分離:日誌非同步輸出,不阻塞背景工作執行緒。
  • 支援多優先順序:不同用戶端可配置不同的優先順序,保證高優先順序日誌最先發送。
  • 本地調試:支援設定本地調試,便於您在網路不通的情況下本地測試應用程式。

在以上情境中,C Producer Library簡化您程式開發的步驟。您無需關心日誌採集細節實現、也不用擔心日誌採集會影響您的業務正常運行,大大降低資料擷取門檻。

C Producer方案與其他嵌入式採集方案對比如下:

類別C Producer其他方案
編程平台移動端+嵌入式移動端為主
上下文支援不支援
多日誌支援不支援(一種日誌)
自訂格式支援不支援(提供若干個有限欄位)
優先順序支援不支援
環境參數可配置可配置
穩定性並發度一般
壓縮演算法LZ4(效率與效能平衡)+GZIP最佳化
低資源消耗最佳化一般
傳輸斷電續傳支援預設不支援,需要二次開發
存取點8(中國)+8(全球)杭州
調試本地日誌支援手動支援
參數配置支援不支援
即時性服務端可見1秒(99.9%),3秒(Max)1-2小時
自訂處理15+對接方式定製化即時+離線方案

C Producer+Log Service解決方案

C Producer結合阿里雲Log Service產品配合使用,即可完成IoT裝置日誌全套解決方案。

  • 規模大
    • 支援億層級用戶端即時寫入。
    • 支援PB/Day資料量。
  • 速度快
    • 採集快:寫入零延遲,寫入即可消費。
    • 查詢快:一秒內,複雜查詢(5個條件)可處理10億級資料。
    • 分析快:一秒內,複雜分析(5個維度彙總+GroupBy)可彙總億層級資料。
  • 對接廣
    • 與阿里雲各類產品無縫打通。
    • 各種開源格式儲存、計算、可視化系統完美相容。
C-Producer解決方案

下載與使用

下載地址:Github

一個應用可建立多個Producer,每個Producer可包含多個Client,每個Client可單獨配置目的地址、記錄層級、是否本地調試、緩衝大小、自訂標識、topic等資訊。

詳細安裝方式及操作步驟,請參見README

下載與使用

效能測試

環境配置
  • 高效能情境:傳統X86伺服器。
  • 低效能情境:樹莓派(低功耗環境)。

配置如下:

環境配置

C Producer配置

  • ARM(樹莓派)
    • 緩衝:10 MB
    • 彙總時間:3秒(彙總時間、彙總資料包大小、彙總日誌數任一滿足即打包發送)
    • 彙總資料包大小:1 MB
    • 彙總日誌數:1000
    • 發送線程:1
    • 自訂tag:5
  • X86
    • 緩衝:10MB
    • 彙總時間:3秒(彙總時間、彙總資料包大小、彙總日誌數任一滿足即打包發送)
    • 彙總資料包大小:3 MB
    • 彙總日誌數:4096
    • 發送線程:4
    • 自訂tag:5
日誌範例(9個索引值對,資料量約為350位元組)
__source__: 192.0.2.1
__tag__:1: 2
__tag__:5: 6
__tag__:a: b
__tag__:c: d
__tag__:tag_key: tag_value
__topic__: topic_test
_file_: /disk1/workspace/tools/aliyun-log-c-sdk/sample/log_producer_sample.c
_function_: log_producer_post_logs
_level_: LOG_PRODUCER_LEVEL_WARN
_line_: 248
_thread_: 40978304
LogHub: Real-time log collection and consumption
Search/Analytics: Query and real-time analysis
Interconnection: Grafana and JDBC/SQL92
Visualized: dashboard and report functions
測試結果
  • X86平台結果
    • C Producer可以輕鬆到達90 MB/s的發送速度,每秒上傳日誌20萬,佔用CPU只有70%,記憶體140 MB。
    • 伺服器在200條/s,發送資料對於CPU基本無影響(降低到0.01%以內)。
    • 客戶線程發送一條資料(輸出一條日誌)的平均耗時為1.2 us。
    X86平台結果
  • 樹莓派平台結果
    • 在樹莓派的測試中,由於CPU的頻率只有600 MHz,效能差不多是伺服器的1/10左右,每秒可發送最多2萬條日誌。
    • 樹莓派在20條/s的時候,發送資料對於CPU基本無影響(降低到0.01%以內)。
    • 客戶線程發送一條資料(輸出一條日誌)的平均耗時為:12 us左右(樹莓派通過USB串連到PC共用網路)。
    樹莓派平台結果