写点什么

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

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

关注

评论

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

阿里云可观测 2025 年 3 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

智能驾驶中预测模块简介

地平线开发者

自动驾驶 算法工具链 地平线征程6

硬盘格式化NTFS好还是exFAT好?ntfs和exfat有什么区别 Mac电脑读取不了移动硬盘怎么办

阿拉灯神丁

文件系统 硬盘 Mac软件 NTFS 磁盘管理器 Tuxera NTFS2024

微店API系列:商品详情接口接入与应用

tbapi

微店商品详情接口 微店API 微店商品采集

代理 Elasticsearch 服务:INFINI Gateway VS Nginx

极限实验室

nginx elasticsearch Gateway

人工智能+牙科:临床应用中的几个问题

算AI

人工智能 算法 医疗AI 视觉模型

【超详细】Mac读取移动硬盘速度很慢的原因及解决方法

阿拉灯神丁

文件存储 磁盘管理 Mac软件 苹果电脑 Tuxera NTFS2024

AI 浪潮下企业身份管理:特点凸显,安全挑战升级

TechLead Studio

AI 企业身份安全

征程 6|工具链 VP 示例中日志打印解读

地平线开发者

自动驾驶 算法工具链 地平线征程6

《Operating System Concepts》阅读笔记:p584-p585

codists

操作系统

高可靠架构+智能运维,华为云会议“始终在线”!

平平无奇爱好科技

大模型 MCP:开启 AI 与现实世界的无缝交互革命

小巫debug日记

MCP协议

使用kvmtool运行和调试Linux内核

Linux内核拾遗

虚拟化 Linux内核 kvm kvmtool

《Operating System Concepts》阅读笔记:p580-p583

codists

操作系统

微店商品列表API接口(Micro.item_search)

tbapi

微店API 微店商品列表接口 微店商品列表数据采集

Shotcut 25.03 (Linux, macOS, Windows) - 免费开源视频编辑器

sysin

PDF 转图片,一行代码搞定!批量支持已上线!

程序员晚枫

开源 PDF

为什么去中心化云算力平台需要原生数字资产(Token)?

PowerVerse

去中心化 Token 算力

南京大学与阿里云联合启动人工智能人才培养合作计划,已将通义灵码引入软件学院课程体系

阿里云云效

阿里云 云原生 通义灵码

CAD怎么创建块遮挡效果

极客天地

Rust 如何轻松实现 RTMP 流媒体推送?深入解析直播推流场景与解决方案

Yeauty

rust ffmpeg Video RTMP media

大模型是否有必要本地化部署?

程序员架构进阶

#架构 4月月更 #大模型 DeepSeek

如何使用 Nginx 代理 Easysearch 服务

极限实验室

nginx easysearch

GraalVM 24 正式发布阿里巴巴贡献重要特性 —— 支持 Java Agent 插桩

阿里巴巴云原生

阿里云 云原生

5分钟手把手教你开发一个MCP服务

小巫debug日记

MCP协议

LLM 不断提升智能下限,MCP 不断提升创意上限

阿里巴巴云原生

阿里云 微服务 云原生 LLM

《Operating System Concepts》阅读笔记:p552-p579

codists

操作系统

Maven实战

Java随想录

Java maven

南京大学与阿里云联合启动人工智能人才培养合作计划,已将通义灵码引入软件学院课程体系

阿里巴巴云原生

阿里云 云原生 通义灵码

开源项目:一行代码,批量 PDF 转 Word 轻松搞定!

程序员晚枫

PDF word 自动化办公

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