InfluxDB 如何与 IoT 数据协同工作
作者:Al Sargent / 产品, 用例, 开发者
2021 年 4 月 5 日
导航至
在过去的几年中,IoT 社区已将 InfluxDB 视为其构建解决方案的基石。无论是现代化还是新建项目,InfluxDB 都帮助许多人处理大量的传感器和设备数据,因为我们不断兑现我们为 IoT 带来卓越时间体验的承诺。
今天,让我们看看为什么您应该考虑将 InfluxDB 用于您的 IoT 数据架构、如何规划您的 IoT 架构,以及我们最近构建了哪些功能来使 InfluxDB 在处理 IoT 数据方面更加出色。
那么,让我们深入探讨吧!
为什么将 InfluxDB 用于 IoT 遥测?
这归结为以下几点
- 久经考验。每个 IoT 设备都会生成时间序列数据,而这些设备及其生成的数据的爆炸式增长,以及对更多分析的需求,推动了对专门平台处理此类数据的需求。InfluxDB 已在世界上一些要求最苛刻的 IoT 客户(例如 西门子 和 PTC)那里证明了其能力,作为 时间序列数据库,它是他们 IoT 堆栈的核心。
- 可扩展。IoT 数据量和消费需求正在快速增长。InfluxDB 可以扩展以摄取和索引海量的 IoT 遥测数据,同时提供实时分析和快速查询响应时间。
- 可扩展。IoT 遥测数据以各种格式跨越 多个领域 出现 — 传统标准、新数据类型以及介于两者之间的一切。InfluxDB 可以摄取各种数据格式。如果您需要不支持的格式,InfluxDB 的可扩展性允许您摄取它。
- 灵活。InfluxDB 的 Flux 语言 在构建 IoT 解决方案方面非常强大,因为它为您提供了一种单一语言来塑造和查询您的 IoT 数据,并且在数据库层执行此操作,因此您不必求助于昂贵的查询来下载数据以进行修改。
- 情境化。InfluxDB 将丰富的元数据(例如 IoT 资产信息)融入时间序列测量中,从而更轻松地获得对资产和流程的过去、当前和未来性能的见解。
每个 IoT 用例都是时间序列用例
IoT - 物联网 - 越来越广泛。传感器在几乎每个行业(从农业到石油和天然气、发电和运输)的部署速度加快,使我们能够以与产品制造或种植效率大致相同的效率访问时间戳信息、潜在的维护和维修需求等等。以下是一些示例,用于探索当今的可能性
- 互联车队:太阳能公司,例如 BBOXX,定期发送有关其每个装置产生的电压的测量值,以便他们可以判断特定装置何时需要维修 — 有时甚至在最终客户自己知道之前。
- 智能空间: 办公楼管理者,例如 Aquicore,跟踪建筑物所有楼层消耗的能源量,这是一个优化为居住者提供舒适环境所需能源量的“智慧城市”示例。
- 智能产品: 例如 办公室饮水机 Bevi,测量使用的调味剂的量,以便他们的服务人员可以在调味剂用完之前自动补充。
IoT 数据架构
我们有大量客户在各个行业成功地将 InfluxDB 用于 IoT,但不断涌现出两种架构模式
- 仅中心
- 边缘和中心
仅中心 IoT 数据架构是指您的每个“事物”都将其 IoT 遥测数据发送到中央时间序列数据库(例如 InfluxDB Cloud)进行存储、丰富和分析。假设所有设备都具有可靠、高性能的互联网连接以发送其 IoT 遥测数据,因此该数据的所有使用者都可以从该中央数据库访问它。
例如,tado° 是一家为高效制冷和供暖提供联网家庭恒温器的供应商,将其所有恒温器遥测数据发送到 InfluxDB Cloud。tado° 客户可以通过 tado° 的移动应用程序访问其房屋的温度,该应用程序从 InfluxDB 获取数据。鉴于家庭恒温器将始终位于房屋 WiFi 路由器的覆盖范围内,因此这种仅中心的架构是可行的。
来源:tado°
当设备没有快速可靠的网络连接,并且现场有人需要访问分析以协助运营决策时,则需要 边缘 和中心 数据架构,而跨所有潜在边缘站点的集中可见性可用于了解趋势分析、运营效率或识别潜在问题。在这些情况下,将时间序列遥测数据双写入到现场时间序列数据库以及中央实例是有意义的。
例如,Equinor 是一家能源生产商,在北海运营石油钻井平台。他们的石油钻井平台需要近乎实时地了解钻井平台的各个方面,以便能够正常运行。在这种情况下,Equinor 在石油钻井平台上部署 InfluxDB 以便钻井平台操作员可以访问此数据是有意义的。
与此同时,这些石油钻井平台将其时间序列遥测数据(通常分辨率低于本地捕获和存储的分辨率)传输到其公司总部。公司总部的员工可以分析来自所有钻井平台的数据,并查看设备运营特征之间的异同。这允许执行预测性维护等分析,并将这些建议发送回给钻井平台操作员。我们发现边缘和中心模式在 IIoT(工业物联网) 和工厂实施 工业 4.0 的用例中尤为常见。
因此,在规划您的 IoT 数据架构时,请问问自己哪种模型最适合您和您组织的需求。说到问题……
如何规划您的 IoT 数据架构
在规划您的 IoT 数据架构时,需要考虑八种类型的问题;以下是这些问题
数据和决策:您正在收集哪种 IoT 数据,以及哪些决策是由这些数据驱动的?您可能会有三种类型的决策需要考虑
- 过去:我们之前的表现如何?这对质量、效率或数量有何影响,又提出了哪些变更(如果有)?当跨多个站点(工厂、风力涡轮机等)汇总时,此分析可能尤其有用。
- 当前:我们现在的表现如何?是否需要采取纠正措施?这些类型的决策通常由现场操作人员做出。
- 未来:根据我们目前看到的数据,我们未来可能表现如何?这可以通过使用里程或使用情况数据来确定何时需要维修或更换设备,从而帮助推动有关预测性维护的决策。
数据和存储:哪些数据适合存储在关系数据库中,哪些数据应该存储在时间序列数据库中?随时间变化的数据(例如传感器读数(温度、压力、电压等))通常最适合时间序列数据库。
但是,随时间静态的数据(例如 IoT 资产元数据,如机器 ID、传感器 ID、制造商、型号、购买日期、上次维修日期或固定设备的位置)通常最好存储在关系数据库中。毕竟,一遍又一遍地将相同的不变信息重写到时间序列数据库中将是一种存储浪费。
当您的时间序列数据和元数据存储在单独的数据库中时,重要的是能够将此元数据融入您的时间序列数据中,以便为更好的分析提供上下文 — 我们将在下面看到如何做到这一点。
与能够让您选择云供应商和位置来存储 IoT 数据的时间序列数据库合作也至关重要。这使您可以自由地使用任何具有您需要的云服务的供应商,并灵活地满足您拥有的任何数据驻留要求。InfluxDB Cloud 正是这样做的,它在全球多个区域的 AWS、Azure 和 Google 上运行(并且我们正在不断扩展)。
数据和位置:如果您使用中心和边缘模式,您在边缘存储哪些数据,在中心存储哪些数据?为了让现场操作员完成他们的工作,他们需要哪些数据,需要以什么频率收集数据(每秒一次、每 10 秒一次等),以及需要以什么频率可视化数据才能最好地理解?同样,为了让公司分析师完成他们的工作,他们需要哪些数据,需要多久从边缘发送到中心一次,以及以什么分辨率发送?
网络和数据分辨率:网络性能和可用性如何在数据发送的时间以及所需的汇总类型方面发挥作用?例如,BBOXX 为发展中国家提供太阳能,并且需要在缓慢的 2G 蜂窝网络上收集数据;在这些情况下,通常需要 下采样数据。这与 tado° 不同,在 tado° 中,每个联网恒温器都位于快速、可靠的 WiFi 连接旁边,这意味着可以更频繁地发送数据,而减少对下采样的需求。
数据量:部署了多少传感器,它们多久发送一次数据,它们发送多少 IoT 测量值和事件,以及完成哪些(如果有)下采样?所有这些都会影响您需要在时间序列数据库中摄取的数据量。如果您计划使用现场时间序列数据库(如 InfluxDB OSS)在边缘存储数据,您需要规划您的计算资源消耗(内存、磁盘、CPU)并相应地调整硬件大小。如果您计划使用 InfluxDB Cloud 在中心存储数据,您无需计划如何扩展,因为 InfluxDB Cloud 会自动扩展;只需使用其 基于使用量的定价 来确定您的预算支出。
现有数据架构:您目前使用什么来传输来自传感器的时间序列数据?您使用什么(如果有)来持久保存该数据?您使用什么来存储您的静态数据(传感器 ID 等)?您需要选择一个时间序列平台,该平台为您提供大量选项以适应您当前的架构,并为您提供在未来升级架构的选项。(下面将详细介绍。)
现有性能:您现有的数据架构性能如何?过去,我们看到公司和组织难以摄取他们产生的大量时间序列数据。这导致管理带有 IoT 传感器的办公楼的 Aquicore 关闭 Postgres 并转向 InfluxDB 以获取时间序列数据。查询速度也很重要,对于需要实时遥测数据以进行关键调整的现场操作员以及希望辨别大型数据集中趋势的公司分析师而言,查询速度都很重要。查询性能导致 tado° 从 MySQL 切换到 InfluxDB,因为后者将查询时间缩短了 200 倍。
架构和权威:如果不考虑人和组织因素,即使是最好的架构也可能会脱轨。您需要了解谁对围绕数据架构的决策具有权威和影响力,包括谁有兴趣保持现状,以及谁在推动变革。这包括广泛地查看 OT(运营技术)和 IT(信息技术)以及现场(工厂、发电厂等)和公司办公室的人员。如果您身处受监管的行业,则可能包括法律和合规团队的人员,他们可能希望转换数据以删除 PII(个人身份信息)— 下面将详细介绍。
InfluxDB 和 IoT 的新功能
在过去的几个月中,我们投入了更多资金来扩展我们面向 IoT 客户的产品市场契合度,这些客户的设备包括移动设备和固定设备。这包括对当今可用的地理时空数据丰富化以及即将登陆 InfluxDB Cloud 的可视化(地图)的投资。
这些与 IoT 相关的产品投资涵盖了我们的时间序列数据平台,其中包括
- Telegraf,用于获取和丰富 IoT 遥测数据
- InfluxDB Cloud,用于在中心持久保存、丰富和分析 IoT 数据
- InfluxDB OSS,用于在边缘持久保存、丰富和分析 IoT 数据
它们分为四个领域:获取、丰富、运营和分析。
让我们深入了解一下每个领域。
获取 IoT 遥测数据
我们努力增强了 Telegraf 和 InfluxDB,以便您可以灵活地连接到各种现有的 IoT 传感器和设备。通过这些增强功能,InfluxDB 可以
- 从大多数常用的 IIoT(工业物联网)遥测协议(如 OPC-UA)获取数据;
- 支持开放的、基于标准的协议,如 MQTT;以及
- 提供可扩展性以从其他协议收集数据。
我们最近新增的功能包括以下内容
这些增强功能是对以下长期功能的补充 - 一个相当长的列表,反映了上面显示的 IoT 市场的广度和多样性,包括
- Telegraf MQTT 插件
- Telegraf AMQP 插件
- Telegraf Azure Event Hub 插件
- Telegraf RTI DDS 插件
- InfluxDB 与 Apache NiFi、openHAB、WinCC、Node-RED、Particle.io 之间的原生集成
- ..以及更多
此外,InfluxDB 提供了一组丰富的 API,使几乎任何系统或设备(使用各种编程语言)都可以向数据存储发送数据和从中查询数据。
以下图表总结了我们与 IoT 相关的数据采集能力
即使我们提供了上述广泛的支持,并且拥有超过 200 个 Telegraf 输入插件,可能仍然存在我们尚未支持的数据源。在这些情况下,请在 Telegraf 仓库中提交 功能请求,或通过 Telegraf 的 ExecD 集成垫片 利用其可扩展性。
丰富 IoT 遥测数据
在过去一年中,我们一直在增强 InfluxDB,让您能够将 IoT 资产元数据(例如,机器 ID 和传感器 ID)与 IoT 时间序列遥测数据结合起来,从而提供设备状态和运行状况的可读视图。您可以通过以下三种方式使用 InfluxDB 丰富 IoT 遥测数据
- 元数据丰富
- 地理空间丰富
- 计算值丰富
让我们逐一介绍。
元数据丰富。以下是一个示例。在 InfluxDB 行协议中,您可能会有以下风力涡轮机的时间序列数据点
turbineVoltage, turbineID=1234 voltage=150 1556813561098000000
如果您是人类,这并不能告诉您太多信息。这个涡轮机有多大?它是否在产生预期的输出?如果不是,它上次维护是什么时候?是否需要尽快将其离线?
但假设您有一个关系数据库,其中 turbineID 作为您的涡轮机表的主键,其中包含涡轮机制造商、型号和上次维护日期等列。在这种情况下,您可以 查询您的关系数据库 以获取元数据,然后将元数据 连接到您的时间序列数据,同时 对您的关系数据库凭据保密。所有这些您都可以使用 Flux 完成,Flux 是 InfluxDB 用于处理时间序列数据的语言。
一旦您拥有这种更丰富的关系型加时间序列数据视图,回答上述问题就会容易得多。在过去一年中,我们增加了对各种关系数据库的支持,包括 PostgreSQL、MySQL、Snowflake、SQLite、Microsoft SQL Server、AWS Athena、Google BigQuery、MariaDB 和 CockroachDB。这使您可以从广泛的来源添加元数据,但如果您希望我们支持其他来源,请通过在 Flux 仓库中 提交 issue 告知我们。
地理空间丰富。通常,IoT 遥测数据将包含设备的纬度和经度,您会希望使用此数据按特定位置过滤遥测数据。由于 IoT 数据量可能巨大,因此确保这些地理空间查询尽可能快速地运行非常重要。
Flux 的 geotemporal 查询函数 可以利用专门的地理空间索引,该索引可以在数据采集时计算,也可以在查询时根据原始经纬度数据动态计算(如果需要)。
计算值丰富。有时您需要使用计算值丰富时间序列遥测数据。例如,您可能希望使用时间序列遥测数据中的电流和电阻来计算电压,使用公式:电压 = 电流 * 电阻。或者将英制测量单位(如华氏度、英里或磅)转换为相应的公制值。或者降低 IoT 测量的精度。
在摄取时,您可以使用 Telegraf Starlark 插件 将计算值添加到传入的时间序列遥测数据中。您可以使用 InfluxDB Tasks 和 Flux map() 函数 将计算值添加到您现有的时间序列数据中。
以下是关于我们迄今为止介绍的 IoT 数据采集和丰富功能的图形化总结
使用本地 IoT 遥测数据进行操作
如前所述,有时将 IoT 遥测数据存储在现场或车载设备上很有帮助,这样设备操作员就可以实时获得高分辨率数据,而无需担心网络性能。
为了支持这些用例,InfluxDB OSS(开源软件)是一个不错的选择,因为它在单个轻量级二进制文件中提供了完整的时间序列数据平台(存储、分析、任务、仪表板 和 警报)。这种全方位的功能使 InfluxDB OSS 成为 智能边缘 用例的理想选择。
由于有 各种各样的 IoT 设备在 ARM 处理器上运行,我们最近将 InfluxDB 移植到 ARM 64,为您提供更灵活的部署选项。现在您可以访问我们的 下载页面,获取在 ARM 64 位系统(如 Raspberry Pi 4 系列)上运行的 Ubuntu、Debian、RHEL 和 Centos 的 InfluxDB 二进制文件,并且还有用于 InfluxDB 的 ARM 64 Docker 镜像。
如果您正在运行 Windows 10,InfluxDB OSS 也将很快在上面运行 - 敬请期待!
以下是我们目前介绍的内容
分析 IoT 遥测数据
一旦您的数据被摄取和丰富,就可以对其进行分析以驱动决策,例如上面列出的那些。为此,我们最近取得了一些重大进展;以下是两项。
地理时空数据。InfluxDB 现在允许您运行地理时空查询,用于固定和移动资产。例如,您可能想了解哪些车辆的发动机运行正常?我们所有工厂、太阳能发电场或风力涡轮机的输出是多少?等等。
在这些情况下,您可以使用 Flux Geo 包 按地理位置查询 InfluxDB。很快,您将能够在 InfluxDB Cloud 数据浏览器 和 仪表板 中的地图上可视化这些结果。以下是一个示例。
Flux Geo 包非常灵活:您可以查找特定点、矩形、单点或任意形状的多边形(例如城市、州或国家的边界)半径内的所有点。您可以将地理时空过滤与 许多其他类型的 Flux 函数 结合使用。
可扩展的分析。我们创建 Flux 的 原因之一 是我们想要一种易于扩展的语言。在上述 IoT 领域中,我们可以相应地向 Flux 添加各种各样的分析函数。其中之一是 用于计算 OEE(整体设备效率)的 Flux 函数,这是衡量制造生产力的标准。例如,OEE 得分 100% 表示您仅生产合格零件,速度尽可能快,且没有停机时间。
OEE 只是 Flux 可扩展性的一个例子。如果您希望我们向 Flux 添加其他分析函数,请在 Flux 仓库中 提交 issue。
总而言之,以下图表总结了我们在产品线中与 IoT 相关的四类投资
我们的 IoT 产品理念
您在上面看到的是 IoT 功能的漫长旅程中的第一步,因此我想分享我们构建产品的理念,以便 InfluxDB 可以作为您 IoT 数据架构的基础元素
IoT 卓越体验的快速实现:自成立以来,InfluxData 一直专注于让时间序列数据的处理变得容易。当我们深入扩展以满足我们的 IoT 和 IIoT 客户的需求时,我们继续遵循这一原则,努力为我们的时间序列平台提供易用性、强大功能和可扩展性的正确组合。
自管理和即服务:我们意识到我们的客户群将有各种各样的需求和用例。你们中的一些人希望灵活地使用上述组件组装自己的 IoT 遥测平台。或者您可能想要一个预组装的 IoT 平台;如果是这样,请查看 PTC ThingWorx,它使用 InfluxDB 作为其时间序列数据库。
新项目和旧项目:我们的一些客户很幸运,在制定他们的 IoT 数据架构时可以从一张白纸开始;我们称他们为新项目客户。但是,许多其他旧项目客户拥有数十年的传统 IIoT 历史记录器,这些记录器无法处理 IoT 遥测数据的指数级增长,以及整个组织对使用它的渴望。我们必须满足新项目和旧项目客户的需求,通过支持较旧和较新的技术。这包括在必要时与传统历史记录器共存。
渐进式现代化:在实际工业环境中,没有人会一次性更改所有内容。这对运营的干扰太大。相反,我们看到的是渐进式现代化,例如,当旧设备被替换时,新的 PLC(可编程逻辑控制器)到货。我们需要提供一个与客户共同成长的 IoT 遥测平台。
与领域专家合作: 我们理解 IoT 涉及广泛的领域,因此我们与一系列 IoT 专家合作,为我们的共同客户交付 IoT 解决方案。除了 PTC 之外,这些合作伙伴还包括 Nortal、Factry RTI、Particle、Seeq 和 Rockwell。如有需要,请随时与他们联系!
总而言之,我们认为 InfluxDB 是满足上述要求的现代 IoT 堆栈的核心组成部分。
结论
现在您已经了解了常见的 IoT 部署模式、架构、用例以及 InfluxDB 如何解决这些问题,接下来可以执行以下操作
- 注册一个 免费的 InfluxDB Cloud 账户,并按照我们的 入门指南 进行操作,其中提供了教程。
- 查看我们关于 IoT 的 白皮书 和关于 IIoT 的 白皮书。
- 向其他 IoT 和 IIoT 客户 学习。
当然,如有任何问题,请随时与我们乐于助人的 InfluxDB 社区 和 Slack 联系。祝您使用愉快!