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字节

__source__:  11.164.233.187  
__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可以轻松到达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共享网络)
图片描述

一些典型场景可以参见云栖论坛 和最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523120.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Storm精华问答 | Storm如何连接MySQL?

Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,大数据实时处理解决方案的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术…

ECS 控制台诊断系统

摘要: 控制台诊断系统,旨在为您提供快速反馈问题的渠道,在降低您的反馈成本的同时,第一时间为您提供解决方案,减少您的损失,给您提供更加平滑的控制台操作体验。 当您在操作 ECS控制台 时,可能会…

android 获取通讯录全选反选_Xamarin.Forms读取并展示Android和iOS通讯录 TerminalMACS客户端...

本文同步更新地址:https://dotnet9.com/11520.htmlhttps://terminalmacs.com/861.html阅读导航:一、功能说明二、代码实现三、源码获取四、参考资料五、后面计划一、功能说明完整思维导图:https://github.com/dotnet9/TerminalMACS/blob/mast…

IDEA Terminal替换成Git Bash_05

IDEA Terminal替换成Git Bash 在IDEA中,打开settings,设置相应的bash路径 settings–>Tools–>Terminal–>Shell path:C:\Program Files\Git\bin\bash.exe

再提“鸿蒙”,任正非说这是为物联网而生;硅谷公司年薪报告出炉,谷歌年薪居榜首;苹果CEO库克接班人浮出水面,苹果高层或大换血?...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 麒麟810芯片真容&#xff08…

ECS 按量付费VPC实例停机不收费FAQ

摘要: 停机不收费支持范围 目前只支持VPC类型的按量付费的ECS实例,您需要在控制台签署接受停机不收费协议可以开启。开启之后下次Stop机器自动进入停机不收费模式。不影响您的经典网络和包年包月预付费ECS实例的行为。 停机不收费支持范围 目前只支持VP…

在maven引入一个maven仓库中不存在的jar,安装本地底仓库

问题描述:如果要在一个maven工程中引入一个不存在的jar,即无法通过denpendecy的gav定位到。 处理方式: 方式一:如果maven工程是war包形式,可以直接放在 WEB-INF下的lib目录中,然后add到类路径中。 方式二…

重磅!Python再次第一,Java和C下降,凭什么?

编程语言流行指数(PYPL)排行榜近日公布了2019年7月份榜单。在最新一期榜单上, Python的份额高达28.08%,再次蝉联第一,并且增长4.7%,同时成为增长势头较好的语言。而被挤到第二蝉联Java,同比下跌1.8个百分点…

deepin中mysql数据库的连接_教你如何典雅的用Python连接MySQL数据库

简介:作者 | Python语音识别不管是机器学习、web开发或者爬虫,数据库都是绕不过去的。那么今天我们就来介绍Python如何Mysql数据库进行连接以及数据的交换。主要分为以下几个方面:什么是数据库?什么是MySQLdb?Python如 ...书页库概…

AliOS Things KV组件的写平衡特性

摘要: KV组件的写平衡(磨损平衡)特性就是通过异地更新、垃圾回收等策略来平衡flash介质各个存储区块的磨损程度,以避免某些“特定”存储区块因过度使用而形成坏区,从而延长flash的使用寿命。 前言 KV组件是AliOS Thing…

解决win10系统下,git Bash闪退的问题

问题描述 在git官网下载了软件,安装之后,git Bash出现闪退现象,同时在当前文件夹下面会生成一个mintty.exe.stackdump的文件。 git GUI同样打不开,同时会报出错误,具体情况如下图: 点击百度云链接,下载一个…

AliOS Things网络适配框架 - SAL

摘要: 很多物联网应用场景中,都需要使用主控MCU外接连接芯片(如WiFi、NB-IoT)的解决方案。为方便这类场景的开发,AliOS Things提供了Socket Adapter Layer(SAL)框架和组件方案 AliOS Things中提…

文末送书啦!| Device Mapper,那些你不知道的Docker核心技术

戳蓝字“CSDN云计算”关注我们哦!接触Docker 比较早的同学应该知道,Docker 在最开始只能在Ubuntu和Debian等少数的Linux 发行版上运行,并且在这些发行版上默认使用的存储驱动为AUFS。由于Linux 并未将AUFS的支持纳入自己的内核主线(据说是因为…

铃木uy125最高时速_五菱宏光mini EV月销三万辆,铃木是否后悔退出中国?

国内新能源汽车市场一直是“兵家必争之地”,大到传统汽车厂商,小到造车新势力,都希望能在新能源汽车市场分一杯羹。但长久以来,大多数汽车厂商都只注意到了一部分中国消费者对于“大”的需求,忽视了微型车市场&#xf…

服务器读取账号密码,WIN服务器得明文密码神器 mimikatz、WCE

一、mimikatz(自己亲试,可以在win7 x64下使用)昨天有朋友发了个法国佬写的神器叫mimikatz 让我们看下还有一篇用这个神器直接从 lsass.exe 里获取windows处于active状态账号明文密码的文章http://pentestmonkey.net/blog/mimikatz-tool-to-recover-cleartext-passwo…

100%移植阿里云移动测试技术,竟仅需1周?!——移动测试专有云(3)——内容详解...

摘要: Android兼容性测试旨在帮助解决Android应用在不同真机机型上的各类兼容性问题,包括 Crash/ANR分析、6项性能分析、UI检测、3个版本的覆盖安装检测等。Android兼容性测试使用非常简单,客户只需要提交被检测的APK文件(如需登录…

投篮机投篮有技巧吗_「技巧干货」高手练习投篮的几个技巧,让投篮变得更实用...

会打篮球的都知道,篮球主要的是用更高于对手的得分来取得胜利;然而,让很多的球友烦恼的是,投篮时因为不够稳定,而导致每一场的发挥都不一样,全靠运气投球;这可是球场上的一大禁忌,人…

天龙八部服务器都需要那种系统,天龙八部排行榜系统怎么看 排行榜系统分类介绍...

天龙八部排行榜系统怎么看?有这么一群人,不但战力高,等级高,在其他玩家眼中,他们就是膜拜的大神,他们便是游戏中排行榜上的大神玩家。排行榜分类等级:排行榜打开后的第一个排名就是玩家角色的等级排名&…

SDN精华问答 | 了解SDN架构

SDN火热了好一阵子,无论运营商、政府企业、投资机构,一段时间,不知道SDN、不能甩几个SDN相关的名词术语,似乎都落后于时代了。今天,就来看看关于SDN的精华问答吧。1Q:SDN的本质属性? A&#xff…

SpringBoot2整合Activiti6工作流框架

文章目录下载实战操作:创建用户3 创建app4 选择我们的指定的流程图下载 wget https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip浏览器 http://localhost:8080/activiti-app/#实战操作: 创建用户 2.创建流程…