使用Fluentd,MinIO和Spark进行物联网数据存储和分析

使用Fluentd,MinIO和Spark进行物联网数据存储和分析

物联网策略成功的主要要求之一是能够存储和分析设备和传感器数据。随着物联网每天使成千上万的设备联机,由所有这些设备组合生成的数据将达到惊人的水平。

以可扩展但经济高效的方式存储物联网数据,同时能够轻松分析它是一个重大挑战。

在本文中,我们将看到一组企业级开源产品,这些产品将有助于建立健壮,经济高效的IoT数据存储和分析管道。我们将在设置中使用的产品是

  • Fluent Bit:Linux,OSX和BSD系列操作系统的数据转发器。

  • 流利的:统一的数据收集和使用层。

  • 最低IO:可扩展的云原生存储后端。

  • Spark:用于大规模数据处理的通用分析引擎。


1_vPZMoZOZD_pC5LOxPHfSzw.png
使用Fluentd,Minio和Spark的示例物联网工作流程


现在,让我们逐个步骤,看看如何进行这种设置。

流利的比特:最后一英里的数据收集

物联网数据源种类繁多。在典型的设置中,可以有几种类型的传感器,操作系统,数据库和其他类型,每种类型都以自己的格式发送数据。

Fluent Bit的可插拔设计简化了从所有这些端点收集数据的过程。Fluent Bit中的每个输入和输出路径都是一个插件,可让您从各种来源提取数据并将其发送到各种目标。

为了了解Fluent Bit的工作原理,让我们看看如何设置Fluent Bit来获取CPU使用率数据并将其发送到Fluentd实例。

首先,使用此处提供的文档安装Fluent Bit 要摄取数据,我们将使用cpu输入插件,并将其发送到Fluentd,我们将使用forward输出插件。这两个插件默认情况下都可用,因此只需运行$ fluent-bit -i cpu -t fluent_bit -o forward://127.0.0.1:24224

这会将cpu数据发送到监听的Fluentd实例127.0.0.1:24224

流利的:统一的数据收集层

考虑到典型的物联网部署每天生成的日志大小,几乎不可能由人来分析。机器而不是人类可以更好地使用现代应用程序日志。

Fluentd充当统一的日志记录层,它可以从各种端点获取数据,并让您将其路由到长期存储或处理引擎。在本文中,我们将采用日志数据存储路线。

MinIO:物联网数据存储

处理完数据收集和统一之后,让我们看看如何存储IoT日志记录数据以进行长期分析和使用。

为如此大的数据流选择存储时的关键要求是存储的扩展性如何,成本效益如何,并且由于涉及大量数据传输,因此带宽使用成本是多少。

凭借内置的擦除代码和比特保护功能,与存储硬件无关,易于部署和多租户可伸缩性,MinIO可以检查上述所有框,同时具有成本效益和性能。


在继续之前,我们先来看看如何在Fluentd中摄取Fluent Bit转发的数据并将其转发到MinIO服务器实例。我们将使用该in_forward插件获取数据,并将fluent-plugin-s3其发送到MinIO。

首先,使用此处提到的方法之一安装Fluentd 然后编辑Fluentd配置文件以添加forward插件配置(对于源安装,Fluentd配置./fluent/fluent.conf默认情况下位于)。添加以下部分
 类型正向
 绑定0.0.0.0
 端口24224

这将设置Fluentd为侦听端口24224forward协议的连接。如果按照上一步中的说明设置了Fluent Bit,则应该cpu在Fluentd控制台上看到数据。

接下来,设置Fluentd将日志记录数据发送到MinIO存储桶。请按照以下步骤部署MinIO服务器,并使用mc mb command创建存储桶

然后fluent-plugin-s3通过$ fluent-gem install fluent-plugin-s3安装gem

追加的下面部向Fluentd配置文件来配置out_s3插件将数据发送到一个MinIO服务器。<匹配>
 @type S3
 aws_key_id minio
 aws_sec_key minio123
 s3_bucket测试
 s3_endpoint http://127.0.0.1:9000
 路径日志/
 force_path_style真
 buffer_path /无功/ log / td-agent / s3
 time_slice_format%Y%m%d%H%M
 time_slice_wait 10m
 utc
 buffer_chunk_limit 256m

请注意,您需要更换aws_key_idaws_sec_keys3_buckets3_endpoint在你的MinIO部署的实际值的字段。

Spark:物联网数据处理

为了使连接的设备中的数据有用,处理和分析数据非常重要。Spark非常适合这里。它擅长快速处理大量数据,是物联网数据分析的自然选择。

由于MinIO API与S3完全兼容,因此它可以与其他与S3兼容的工具一起使用,从而可以轻松设置Apache Spark来分析MinIO的数据。


在上面的示例中,我们已经将IoT数据从端点(通过Fluent位)发送到统一的日志记录层(Fluentd),然后将其持久存储在MinIO数据存储中。下一步是设置Spark以分析存储的数据。您可以按照以下步骤将Spark配置为使用MinIO服务器作为数据源。

Spark是一个通用的处理引擎,它开放了广泛的数据处理功能-您是否需要对IoT数据进行预测分析以发现某些硬件的预期故障,还是需要分析非结构化数据来构建模型以理解某些模式。


我们看到了如何使用Fluentd,MinIO和Spark创建典型的IoT数据收集,流传输,存储和处理管道。这样的设置不仅可以很好地扩展,而且是通用的,可以容纳各种类型的IoT工作流。


上一篇 下一篇