天天看點

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

2017年12月19日至20日,2017雲栖大會·北京峰會在國家會議中心召開,飛天智能是貫穿雲栖大會不變的主題,雲計算、大資料、人工智能、物聯網等熱門話題備受各方關注。其中阿裡雲日志服務釋出的嵌入式日志采集用戶端(C Producer Library) 就是其中解決物聯網日志采集、分析難的利器。

<a href="https://yq.aliyun.com/articles/637404">IOT/智能裝置日志解決方案(1):概述</a>

<a href="https://yq.aliyun.com/articles/637406">IOT/智能裝置日志解決方案(2):全方位資料采集</a>

<a href="https://yq.aliyun.com/articles/637411">IOT/智能裝置日志解決方案(3):上下遊對接</a>

IOT/智能裝置日志解決方案(4):計算與分析

IOT/智能裝置日志解決方案(5):線上問題調查

IOT/智能裝置日志解決方案(6):實時監控

IOT/智能裝置日志解決方案(7):搭建業務大盤

IoT(Internet of Things)正在高速增長,越來越多裝置開始逐漸走進日常生活(例如智能路由器、各種電視棒、天貓精靈、掃地機器人),讓我們體驗到智能領域的便利。距Gartner預測,到2020年末預計會有200億智能裝置,可見該領域的巨大市場。

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

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

資料采集:如何實時采集分散在全球各地的百萬/千萬級裝置上的資料?

調試:如何使用一套方案既滿足線上資料采集以及開發時的實時調試?

線上診斷:某個線上裝置出現錯誤,如何快速定位裝置,檢視引起該裝置出錯的上下文是什麼?

監控:目前有多少個裝置線上?工作狀态分布如何?地理位置分布如何?出錯裝置如何實時告警?

資料實時分析:裝置産生資料如何與實時計算、大資料倉庫對接,建構使用者畫像?

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

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

數目多:在傳統運維領域管理1W台伺服器屬于一家大公司了,但10W線上對于IoT裝置而言隻是一個小門檻

分布廣:硬體一旦部署後,往往會部署在全國、甚至全球各地

黑盒:難以登陸并調試,大部分情況屬于不可知狀态

資源受限:出于成本考慮,IoT裝置硬體較為受限(例如總共隻有32MB記憶體),傳統PC領域手段往往失效

移動端SDK:Android/IOS平台資料采集,一天已有千萬級DAU

Web Tracking(JS):類似百度統計,Google Analytics 輕量級采集方式,無需簽名

在IoT領域,我們從多年Logtail的開發經驗中,汲取其中精華的部分,并結合IoT裝置針對CPU、記憶體、磁盤、網絡、應用方式等特點,開發出一套專為IoT定制的日志資料采集方案:C Producer

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

C Producer Library 繼承Logtail穩定、邊界特點,可以定位是一個“輕量級Logtail”,雖沒有Logtail實時配置管理機制,但具備除此之外70%功能,包括:

提供多租戶概念:可以對多種日志(例如Metric,DebugLog,ErrorLog)進行優先級分級處理,同時配置多個用戶端,每個用戶端可獨立配置采集優先級、目的project/logstore等

支援上下文查詢:同一個用戶端産生的日志在同一上下文中,支援檢視某條日志前後相關日志

并發發送,斷點續傳:支援緩存上線可設定,超過上限後日志寫入失敗

還有一些專門為IoT準備功能,例如:

本地調試:支援将日志内容輸出到本地,并支援輪轉、日志數、輪轉大小設定

細粒度資源控制:支援針對不同類型資料/日志設定不同的緩存上線、聚合方式

日志壓縮緩存:支援将未發送成功的資料壓縮緩存,減少裝置記憶體占用

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

C-Producer是量身為IoT定制的方案,是以會有一些特定考慮:

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

用戶端高并發寫入:可配置的發送線程池,支援每秒數十萬條日志寫入,詳情參見性能測試

低資源消耗:每秒20W日志寫入隻消耗70% CPU;同時在低性能硬體(例如樹莓派)上,每秒産生100條日志對資源基本無影響

用戶端日志不落盤:既資料産生後直接通過網絡發往服務端

用戶端計算與 I/O 邏輯分離:日志異步輸出,不阻塞工作線程

支援多優先級:不通用戶端可配置不同的優先級,保證高優先級日志最先發送。

本地調試:支援設定本地調試,便于您在網絡不通的情況下本地測試應用程式。

在以上場景中,C Producer Library 會簡化您程式開發的步驟,您無需關心日志采集細節實作、也不用擔心日志采集會影響您的業務正常運作,大大降低資料采集門檻。

為了有一個感性認識,我們對C-Producer 方案與其他嵌入式采集方案做了一個對比,如下:

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

規模大

支援億級别用戶端實時寫入

支援 PB/Day 資料量

速度快

采集快:0延遲:寫入0延遲,寫入即可消費

查詢快:一秒内,複雜查詢(5個條件)可處理10億級資料

分析快:一秒内,複雜分析(5個次元聚合+GroupBy)可聚合億級别資料

對接廣

與阿裡雲各類産品無縫打通

各種開源格式存儲、計算、可視化系統完美相容

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

一個應用可建立多個producer,每個producer可包含多個client,每個client可單獨配置目的位址、日志level、是否本地調試、緩存大小、自定義辨別、topic等資訊。

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

環境配置:傳統X86伺服器,樹莓派(低功耗環境),配置分别如下:

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

ARM(樹莓派)

緩存:10MB

聚合時間:3秒 (聚合時間、聚合資料包大小、聚合日志數任一滿足即打包發送)

聚合資料包大小:1MB

聚合日志數:1000

發送線程:1

自定義tag : 5

X86

聚合資料包大小:3MB

聚合日志數:4096

發送線程:4

10個鍵值對,總資料量約為600位元組

9個鍵值對,資料量約為350位元組

C Producer可以輕松到達90M/s的發送速度,每秒上傳日志20W,占用CPU隻有70%,記憶體140M

伺服器在200條/s,發送資料對于cpu基本無影響(降低到0.01%以内)

客戶線程發送一條資料(輸出一條log)的平均耗時為:1.2us

IoT日志利器:嵌入式日志用戶端(C Producer)釋出

在樹莓派的測試中,由于CPU的頻率隻有600MHz,性能差不多是伺服器的1/10左右,最高每秒可發送2W條日志

樹莓派在20條/s的時候,發送資料對于cpu基本無影響(降低到0.01%以内)

客戶線程發送一條資料(輸出一條log)的平均耗時為:12us左右(樹莓派通過USB連接配接到PC共享網絡)

IoT日志利器:嵌入式日志用戶端(C Producer)釋出
上一篇: 79.3. mpstat
下一篇: 第 80 章 CPU

繼續閱讀