系列文章:
- IOT/智能设备日志解决方案(1):概述
- IOT/智能设备日志解决方案(2):全方位数据采集
- IOT/智能设备日志解决方案(3):上下游对接
- IOT/智能设备日志解决方案(4):计算与分析
- IOT/智能设备日志解决方案(5):线上问题调查
- IOT/智能设备日志解决方案(6):实时监控
- IOT/智能设备日志解决方案(7):搭建业务大盘
前言
2017年被业界称为物联网(IOT)元年,而未来IOT还将继续高歌猛进。IDC预测全世界在IOT的开支在2018年预计至7725亿美金,相比2017年的6740亿美金有14.6%的上涨。IDC全球半年度IOT开销指南预估在2017年~2021年间全球iOT开支保持在14.4%的CAGR(年复合增长率)在2020年超过1万亿美金,且在2021年达到11000亿美金。爱立信最新发布的数据显示,到2020年预计会有500亿件设备互联。麦肯锡预测,到2025年,物联网将带来高达11万亿美元的年度储蓄和新收入。
下面我们再来看看智能设备:2017年,全球智能家居设备出货量达4.331亿台,比上一年增长27.6%。展望未来,IDC预计2022年市场出货量达到9.397亿台,预计复合年增长率(CAGR)将达18.5%。
无论是物联网还是智能设备,规模都越来越大,产业分工也越来越明确,逐渐形成一整套的生态系统。而同时无论是物联网还是智能设备的生态系统中,日志数据永远是不可缺少的一个重要环节。
日志数据
首先我们需要明确:什么是日志数据。日志并不仅仅是程序的Debug数据,此外还包括但不限于:用户的操作日志、计量计费数据、系统事件、传感器数据、系统/应用指标数据、审计相关数据、调用链日志等等。
这么多种类的日志,看似功能并不关联,但从我们的最终目的来看,无论哪种类型的数据都必不可少。而这个最终的目的也非常的直白浅显:回报(钱)。为了更高的回报,我们需要利用这些数据去分析用户的行为,去进行更有效的运营策略,提高用户粘性;更精准的广告投放,提高广告点击率;利用全方位的日志分析产品缺陷,进行产品优化和快速迭代...
日志解决方案
一个标准的日志解决方案主要包括以下几个流程:
- 连接:连接主要分为设备端(IOT/智能设备)和服务端(服务器以及服务端应用)的数据采集。数据采集需连接分布在全球各地的设备和后台服务,并将设备、服务端的各种类型日志数据统一采集到存储端。为了便于上下游对接,这个存储端通常使用消息队列作为中间的数据缓存。
- 计算:各类数据采集到消息队列后,会进行多轮的计算工作,包括预处理、清洗、聚合等等,各轮的中间计算结果会继续保存到队列中,用于下一轮次的输入。同时计算的过程也可能由其他外部数据源的参与,例如记录设备meta数据的数据库等。
- 监控:为了更快速的发现异常,需要对队列中实时进入的数据进行监控,包括设备状态以及后端服务状态。后端服务监控技术通常较为成熟,设备端状态的远程监控时效性较难保证。
- 分析:当数据计算处理完成后,会进行一些在线和离线的分析,在线分析通常基于流计算实现,离线分析通常会进入数仓进行。
- 利用:最后也是最重要的部分是如何更好的利用这些数据以及分析的结果,包括:智能广告推荐、用户画像构建、产品优化、商业决策支持等。最终这些结果会重新作用于设备端,形成一个数据闭环。
IOT/智能设备日志方案难点分析
搭建一个日志解决方案并不难,网络上有很多开源日志解决方案。但其中有一些问题,尤其是针对IOT/智能设备场景的问题难以解决,主要包括:
- 轻量级的日志客户端:日志上传需要在设备端嵌入,通常使用SDK的方式。由于日志采集只是系统中的的一个非核心业务模块,对于资源的占用需尽可能的低,包括CPU、内存、网络等。最关键的是日志采集SDK需要足够的小,小到可以“塞”到各种各样的设备端。
- 全球数据采集网络:对于一款消费级/工业级产品,设备遍布全国/全球非常普遍,普通的数据采集网络只能依赖于公网,网络链路质量很难得到保证,数据采集也会存在一定的延迟和不可靠因素。如何建立起一张全球采集加速的网络对于设备端日志数据采集的时效性和稳定性非常重要,但同时该项工作也需极大的资源投入。
- 数据时效性:数据采集的时效性一般是从日志产生到最终在服务端可检索到的时间,通常的方案是数据到达队列后,批量同步到数仓,一般需要1-2小时才能检索到,最快也只能到分钟级。这种时效性对于问题的及时发现和排查存在很大困难。若数据几秒内可见,则可做的优化就非常多了:设备新版本发布时,可快速发现问题并及时回滚;客户反馈问题时,客服可基于数据查询系统帮助用户实时的排查问题;根据用户当前的操作信息实时推荐类似内容...
- 前后端一体化:日志采集不仅包括设备端(前端),还包括后端(服务端)各类支撑应用的日志,这两部分日志虽大有不同,但其中很多日志只有前后关联,才能形成完整的调用链分析。因此前后端日志的采集、处理、分析应归于一体。
方案实现
![](https://yunlei-statics.cn-hangzhou.log.aliyuncs.com/logstores/blog-tracking/track_ua.gif?APIVersion=0.6.0&blog=IOT/智能设备日志解决方案(1):概述&src= yunqi&author=davidzhang)
针对以上问题,我们专门推出了基于阿里云日志服务的IOT/智能设备日志解决方案:
- 设备端(IOT/智能设备)和服务端的日志分别通过C Producer和Logtail统一采集到日志服务中。C Producer最低只占用4KB内存;针对全球数据采集场景,日志服务专门提供了全球采集加速功能。
- 采集到日志服务的数据,使用Blink进行数据清洗和迭代计算。Blink支持从日志服务中读取数据,处理完毕后还支持写入日志服务,因此可组合使用Blink、日志服务进行多次的迭代计算。
- 对于清洗后的数据,可直接使用日志服务的统计分析功能进行实时的数据统计。同时日志服务还支持基于统计的结果快速创建报表以及告警,从客户端产生数据到报表可见,延迟可控制在5秒内。
- 考虑到离线分析需要针对长时间范围(数年)的数据进行统计,日志服务还支持将数据投递到OSS、MaxCompute进行归档,便于后续的离线分析。