构建物联网分析的最佳实践
作者:Zoe Steinkamp / 用例
2023年5月1日
导航到
本文最初发表在The New Stack上,并在此处经许可重新发布。
从一开始就选择最适合您的物联网数据和工作的工具将使您的长期工作更加容易和快捷。
今天,物联网(IoT)数据或传感器数据无处不在。行业分析师预测,到2025年,全球连接设备数量将达到3090亿台,比2021年的127亿台增长。
谈到物联网数据时,请记住,它具有特殊的特性,这意味着我们必须计划如何存储和管理它以保持底线。在存储和工具等因素上做出错误的选择可能会使数据分析变得复杂,并导致成本增加。
单个物联网传感器平均每秒发送一个数据点。这相当于一天内80,000个数据点。有些传感器每纳秒生成数据,这显著增加了每天的数据总量。
大多数物联网(IoT)应用案例 并不仅仅依赖于单个传感器。如果你有数百个传感器,它们以这些速度生成数据,那么我们就谈论了大量数据。你可能在一天之内就有数百万个数据点需要分析,因此你需要确保你的系统可以处理这种规模的时间序列工作负载。否则,如果你的存储效率低下,查询返回速度慢,如果你没有为这种类型的数据配置分析和可视化工具,那么你将会遇到糟糕的情况。
在这篇文章中,我将介绍六个最佳实践来构建高效且可扩展的物联网分析。
1. 正确开始你的存储
几乎所有物联网数据都是 时间序列数据。因此,考虑将你的物联网数据存储在时间序列数据库中,因为它是为独特的时间序列工作负载而专门设计的解决方案,提供了最佳的性能。物联网数据的一般形状包含相同的四个组件。第一个是你正在追踪的名称。我们可以称之为测量值,比如温度、压力、设备状态或其他任何东西。接下来是标签。你可能想使用标签为你的数据添加上下文。将标签视为你正在收集的实际值的元数据。这些值本身通常是数字的,但不必是,我们可以称之为字段。最后一个组件是一个时间戳,表示测量发生的时间。
了解我们数据的形状和结构使得在数据库中工作时更加容易。那么什么是时间序列数据库呢?它是一种设计用于存储这些数据值(如指标、事件、日志和跟踪)并根据时间查询它们的数据库。与非时间序列数据库相比,你可以在ID、值类型或两者的组合上查询。在时间序列数据库中,我们完全基于时间进行查询。因此,你可以轻松地看到过去一小时的、过去24小时的以及任何你拥有的其他时间间隔的数据。一个流行的 时间序列数据库 是 InfluxDB,它既可用在云平台上,也可作为开源版本。
2. 高量级摄入
时间序列数据工作负载通常很大、很快且持续不断。这意味着你需要一种高效的方法将数据导入你的数据库。为此,我们可以考虑像 Telegraf 这样的工具,这是一个开源的摄入代理,旨在作为cron作业运行,以收集时间序列指标。它提供了超过300个插件,用于流行的时序数据源,包括物联网设备和更通用的插件,如execd,你可以用它配合各种数据源。
根据你选择的数据库,其他数据摄入选项可能包括客户端库,它允许你使用你选择的语言编写数据。例如,Python是这类工具的常见选择。重要的是这些客户端库来自你的数据库来源,这样你就知道它们可以处理摄入流。
3. 数据清洗
在数据清洗方面,您有三个选择:数据清洗:您可以在数据存储之前进行清洗,在数据进入数据库之后,或者在您的分析工具中清洗。在存储之前清理数据可能只需要完全控制您发送到存储的数据,并丢弃您认为不必要的数据。然而,您收到的数据通常是专有的,您无法选择您接收到的值。
例如,我的光传感器发送了我不需要的额外设备标签,而且偶尔,如果光源突然消失,它会发送奇怪的、错误的数据,例如0。对于这些情况,我需要在存储数据后进行数据清洗。在InfluxDB这样的数据库中,我可以轻松地将我的原始数据存储在一个数据桶中,将清洗后的数据存储在另一个数据桶中。然后我可以用清洗后的数据桶来为我的分析工具提供数据。您无需担心在工具中清洗数据,因为更改不会必然地反映回数据库。如果您等到数据进入您的分析工具再进行清洗,可能会消耗更多资源并影响性能。
4. 下采样的力量
数据清洗和下采样并不相同。下采样是根据时间对数据进行聚合。例如,从您的测量中删除设备ID是清洗,而推导过去五分钟的均值是下采样。《下采样》(Downsampling)是一个强大的工具,与数据清洗一样,它可以节省存储成本,并使数据处理更加容易和快速。
在某些情况下,您可以在将其存储在其永久数据库中之前对其进行下采样,例如,如果您知道您不需要来自您的物联网传感器的细粒度数据。您还可以使用下采样来比较数据模式,例如找出不同日或设备每天小时的平均温度。下采样的最常见用途是聚合旧数据。
您实时监控您的物联网设备,但新数据到达后,您如何处理旧数据?下采样通过应用均值、平均值和其他操作将高粒度数据变得不那么粒度化。这样,您仍然可以执行历史比较和异常检测,同时减少存储空间。
5. 实时监控
在分析您的数据时,您可以将它与历史数据进行比较以查找异常,或者设置参数。无论您的监控方式如何,重要的是要在实时进行,以便您可以使用传入的数据做出快速决策并迅速采取行动。实时监控的主要方法包括使用数据库的内置选项、实时监控工具或两者的组合。
无论您选择哪种方法,查询都应具有快速响应时间和最小延迟,因为您的数据到达工具所需的时间越长,实时性就越低。Telegraf为各种实时监控解决方案提供输出插件。Telegraf配置为与时间序列数据一起工作,并针对InfluxDB进行了优化。因此,如果您想优化数据传输,您可能需要考虑那种组合。
6. 历史聚合和冷存储
当您的数据不再实时相关时,通常还会继续用于历史数据分析。您还可能希望将更旧的数据(无论是原始数据还是下采样数据)存储在更高效的冷存储或数据湖中。尽管时间序列数据库非常适合摄取和处理实时数据,但它也需要成为长期存储数据的绝佳场所。
在各个地点之间进行复制几乎是不可避免的,但你能预防的越多越好,当然,除了备份之外。在不久的将来,InfluxDB 将提供专门的冷存储解决方案。同时,您可以使用 Telegraf 输出插件将数据发送到其他冷存储解决方案。
当处理物联网数据时,使用合适的工具至关重要,从存储到分析再到可视化。一开始就选择最适合您物联网数据和工作负载的工具,将使您的工作长期变得更容易、更快。