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