写点什么

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:001522
用户头像

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

关注

评论

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

YashanDB数据库在金融行业中的关键应用与安全保障

数据库砖家

YashanDB 可能对社交媒体平台带来影响

数据库砖家

YashanDB是一种新兴的数据库管理系统

数据库砖家

为什么应该测试无JavaScript的页面体验

qife122

JavaScript 渐进增强

第一个运行起来的 Shader

Miracle

第一个 Shader 完成!

Miracle

YashanDB数据库在零售行业数据分析的核心优势

数据库砖家

YashanDB数据库在云环境中的部署与管理技巧

数据库砖家

YashanDB数据库在金融行业的实际应用探讨

数据库砖家

YashanDB数据库在金融行业的数据安全应用分析

数据库砖家

YashanDB数据库在物联网数据管理中的创新应用

数据库砖家

YashanDB数据库在金融交易中的效率提升分析

数据库砖家

YashanDB数据库在能源行业管理平台的应用前景

数据库砖家

制造业碳足迹追踪:开源能源管理系统如何助力企业实现“碳数据可视化”?

开源能源管理系统

开源 开源能源管理系统

YashanDB 零售行业的关键应用

数据库砖家

YashanDB数据库在线支持与资源的获取方式

数据库砖家

MyEMS 深度解析:核心功能模块、数据流转逻辑与工业能源优化落地路径

开源能源管理系统

开源 开源能源管理系统

烟草专卖执法案卷评查系统实现全流程高效管理与精准评查

中烟创新

YashanDB数据库在高并发环境下的应用挑战

数据库砖家

YashanDB数据库在零售行业的转型应用

数据库砖家

YashanDB数据库在医疗行业的应用实例与优势

数据库砖家

YashanDB数据库在游戏行业中的性能优化策略

数据库砖家

上下文为核心瓶颈!枫清科技如何攻克企业AI应用跨部门协作难题?

Fabarta

人工智能 AI Agent

舆情监测中的海外社交媒体监控实战

沃观Wovision

YashanDB数据库在物联网数据处理中的优势

数据库砖家

YashanDB数据库在医疗行业数据合规中的关键作用

数据库砖家

YashanDB数据库在医疗行业中的应用前景

数据库砖家

YashanDB数据库在人工智能项目中的应用分析

数据库砖家

YashanDB数据库在数据湖中的角色与功能

数据库砖家

YashanDB数据库在云环境中的应用效率探讨

数据库砖家

谈谈Vibe编程(氛围编程)

周末程序猿

大模型 vibe coding

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