QCon北京|3天沉浸式学习,跳出信息茧房。 了解详情
写点什么

Vivint 大规模 IoT 部署的指标收集

  • 2018-04-18
  • 本文字数:1337 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Vivint 工程团队构建了自己的指标收集平台,用于收集和分析他们部署的设备上的指标。他们之所以编写自己的系统是希望能够只存储聚合数据,并集中精力分析这些数据,这是通过Rothko 项目实现的。

Vivint 是一家智能家居设备提供商。Rothko 的基本设计决策不同于 Graphite、OpenTSDB 等系统的地方在于,它存储聚合数据,而不是每项服务的数据点。他们这样做是因为他们有意识地对不存储每个数据点和仍然具备精准定位问题的能力进行了权衡。同时,用于统计分析的数据不能丢失此类分析所需要的任何关键特征。

Rothko 可以提供指标的总体分布并分析它们。鉴于没有存储单个的指标,团队是否遇到过单个设备需要诊断的情况?InfoQ 采访了 Vivint 软件工程师 Jeff Wendling ,了解更多情况以及 Rothko 的架构:

事实上,我们不会存储单个的数据点。这可以通过两个方法解决。一个是,我们可以简单地存储最小值和最大值以及数据来源,我们就是这样做的。那有助于我们发现最显著的异常。另一个是,考虑到每种设备大约每 30 分钟发送数据,我们有一个“数据流入口(firehose)”,让我们可以接入数据,筛选出特定的指标或设备等等。假如它还是发送,我们通常就可以找出是哪个设备。当然,这两个方法并不能保证我们可以确定问题,但是,我们只需要付出 20% 的努力就得到了一个廉价而便捷的 80% 的解决方案,这符合 Rothko 的原则。

通常,时间序列数据有类似标签这样的元数据,可以存储类似应用程序名或数据中心位置这样的额外属性,在分析过程中可以用它们进行逻辑分组。Vivint 的数据也是这样吗?Wendling 回复说:

我们只会向上发送一个随机的实例 ID,这目前只是一个非结构化的字节切片。理论上讲,你想发送什么,就可以向上发送什么。考虑到我们监控的设备大部分都是客户家居用的廉价设备,它们没有配备任何 GPS 设备,但是,可以通过 IP 得出颇为接近的定位。

Rothko 的架构中包含一个数据库实现,为每个指标分配数量可配置的平面文件,使用 mmap 写入和读取。它还包含一个基于 Graphite 有线协议的指标接收实现,一个近似的分位数略图用于聚合数据,一些 API 端点用于检索数据、渲染图像,以及一个前端 UI,方便人们使用。数据可以从设备安全地发送到Rothko 端点。

Wendling 说,“我们的设计一直保持可插拔”,因为“有许多相互矛盾的计算标准和不同的工作负载。例如,在内部,我们就有自己的插件,用于从我们自定义的有线协议中读取指标。我们的设计让插件编写很容易,而且使用一个 toml 文件即可完成配置。甚至是日志和进程内部指标收集都可以轻松替换成任何你想要的东西。”

按照设计,Rothko 用来处理大量实例的少数指标。目前,它处理大约 5 万个指标,使用 500MB 内存在大约 50 秒内完成磁盘刷新。据 Wendling 介绍,刷新每 10 分钟一次,因此“应该很容易处理 50 万个指标”。它部署在单个实例上,目前尚没有实现像横向切片这样的扩展策略的需求。

有人问,Vivint 的团队是否也使用了什么预警机制,Wendling 答复说,他们不那样做,而是要更多地关注控制面板。Rothko 是用 Go 编写的开源项目,托管在Github 上

查看英文原文: Metrics Collection from Large Scale IoT Deployments at Vivint

2018-04-18 19:001102
用户头像

发布了 1008 篇内容, 共 404.0 次阅读, 收获喜欢 345 次。

关注

评论

发布
暂无评论
发现更多内容

手把手教你用 Jenkins 自动部署 SpringBoot

江南一点雨

Java spring jenkins springboot

干货丨数学规划视角下的分货优化解题思路

杉数科技

运筹优化 智能分货 供应链计划 仓储优化 门店分货

如何过一个充满科技感的七夕?华为告诉你

最新动态

企业应当实施的5个云安全管理策略

SEAL安全

云计算 容器 DevOps 云原生 DevSecOps

什么是 DevOps?看这一篇就够了!

玩转Devop和研发效能DevStream/DevLake

DevOps

聚焦数据来源、数据质量和模型性能构建小微企业信用画像

易观分析

数据技术 小微企业

AI 助力双碳目标:让每一度电都是我们优化的

阿里技术

人工智能

什么是 DevOps?看这一篇就够了!

胡说云原生

管理 DevOps 运维 开发 签约计划第三季

TPC藏宝计划IDO自由协议复利模式开发功能分析

开发微hkkf5566

炫酷又高效的数据可视化大屏,做起来真的没那么难!丨极客星球

MobTech袤博科技

产品设计 数据可视化

未来已来,只是尚未流行

石云升

读书感悟 未来社会 8月月更 未来以来

2022上半年各银行理财子公司深耕差异化发展,净值型产品数量增加

易观分析

银行 子公司 差异化发展 净值型产品

Tapdata 开源项目基础教程:功能特性及实操演示

tapdata

Tapdata 开源社区

分布式链路追踪Jaeger + 微服务Pig在Rainbond上的实践分享

北京好雨科技有限公司

开源 Kubernetes 云原生 SpringCloud Jaeger

【黄啊码】MySQL入门—1、SQL 的执行流程

黄啊码

MySQL 8月月更

【黄啊码】MySQL入门—2、使用数据定义语言(DDL)操作数据库

黄啊码

MySQL 8月月更

秒云成功入选《2022爱分析 · 银行数字化厂商全景报告》,智能运维能力获认可

MIAOYUN

人工智能 银行数字化转型 智能运维 智能运维AIOps

制作温馨浪漫爱心表白动画特效HTML5+jQuery【附源码】

JavaPub

运维:Centos8安装supervisor守护Nginx进程笔记

天使不哭

#开源 8月月更

直播回放含PPT下载|基于Flink & DeepRec构建Online Deep Learning

阿里云大数据AI技术

深度学习

SchedulX V1.5.0发布,提供快速压测、对象存储等全新功能!

星汉未来

云原生 k8s IT运维 降本增效 星汉未来

JS逆向字体反爬,某供应商平台反爬实践

梦想橡皮擦

Python 爬虫 8月月更

全面认识MOS管,一篇文章就够了

矜辰所致

电路设计 8月月更 电子设计基础 MOS管

【有话耀说】开发小达人们,荣耀开发者服务平台正式入驻InfoQ社区啦~

荣耀开发者服务平台

技术分享| 小程序实现音视频通话

anyRTC开发者

小程序 uni-app 音视频 语音通话 视频通话

临床研究方法学,到现场,到数据真实发生的地方 | 对话数智 x 张维拓

ModelWhale

数据分析 人才培养 数据科学 8月月更 临床医学

技术干货 | 用零信任保护代码安全

权说安全

活动报名:如何高效应对当下的实时场景需求?

tapdata

Tapdata 实时数据

隐私计算与数据流通:关系、作用及功能

Jessica@数牍

隐私保护 隐私计算 数据流通 数据交易 数牍科技

萌宠来袭,如何让“吸猫撸狗”更有保障?

旺链科技

区块链 产业区块链 宠物行业

数据中台建设(九):数据中台资产运营机制

Lansonli

数据中台 8月月更

Vivint大规模IoT部署的指标收集_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章