InfluxDB 的优势及在数据科学中的应用案例

导航至

本文由 Infosys 公司高级数据科学家撰写。

Infosys 是一家总部位于印度的全球 IT 领导者,拥有超过 20 万名员工,专注于数字化转型、人工智能/机器学习和分析。我们的组织在处理数据以协助主动异常检测、处理事件以适应数据和体积增长、并保持接近 100% 的正常运行时间和 SLA 方面面临挑战。鉴于行业格局和我们的当前用例,时序数据库解决方案至关重要。

为什么选择 InfluxDB

开发者越来越多地使用 InfluxDB 等时序数据库来改进时序数据的存储,而不是 MySQL 类型的数据库,因为时序数据库允许持续监控数据。InfluxDB 可扩展,提供内存、流量和 CPU 的分析,以支持容量规划和物联网解决方案。

我们选择 InfluxDB 来处理我们的数据挑战,因为它在业界享有盛誉,且易于快速采用。我还通过 InfluxDB 的构建者 InfluxData 举办的虚拟峰会活动了解到 InfluxDB。这些活动帮助我们的挑战相互联系和协调,并介绍了 InfluxDB 强大的用户社区。与竞争对手不同,InfluxDB 允许数据便携性、数据日志访问和数据匿名化,以满足合规性要求。

InfluxDB 版本 2.2 在多个技术类别中被公认为行业领导者,从数据库即服务 (DBaaS) 到开源,再到时序数据库和可观察性。其力量源于其弹性扩展的能力,以及使用如管道转发器等复杂操作的能力,将一个功能输出发送到另一个功能。InfluxDB 能够提供比一些替代数据库更多的粒度。这对于 CPU、RAM、I/O 和磁盘空间利用率等指标尤为重要,这些指标有助于我们的组织进行容量规划和系统工程。InfluxDB 还处理更大的平均吞吐量,使用更少的磁盘空间,并专注于云基础设施的虚拟化。

InfluxDB 关于 API 和指标的资源丰富,使我们能够无缝地开始使用 InfluxDB。特别是 API,是 CI/CD 管道开发中的宝贵资源,可以通过分片查询与 Splunk 中的某些信息结合,以支持高可用性和吞吐量。InfluxDB 还具有分组函数,可以按序列聚合,并根据指定的属性创建新的分组键。了解 InfluxDB 的行协议很重要,该协议由表格、表格流、列、行和分组键组成。Flux 数据结构通常与源数据格式不同,源数据格式通常是列式表格。Flux 通过将表格流作为输入并单独对每个表格进行操作,在表格流上操作。

使用这种语法,我们引入了Flux,它可以根据所选数据量处理几乎任何间隔和速度的网络遥测数据。用户可以从源中检索指定数量的数据,根据时间或列值对其进行过滤,处理它,并将其塑造成结果。用户还可以在UI中执行这些操作。这允许他们直接自定义查询和仪表板,并有助于数据缩减和可伸缩性。可以轻松创建数据库集群,并根据所需的吞吐量进行配置。用户聚合指标后,下一个重点是使用InfluxDB任务处理数据。任务引擎提供许多帮助分析、修改和针对流数据采取行动的选项。如果用户想要将数据以JSON格式导出以合并到.zip文件中,InfluxDB任务可以将每个记录发送到REST API的URL端点。然后用户可以在Flux脚本或用户界面中使用json.encode()http.post()函数。

在Infosys,InfluxDB的一些最常见用途包括监控时间序列数据、预测、创建警报以及API开发。还关注监控基础设施网络,并将一些与数据核对有关的问题与计费联系起来,如典型的监控企业工具。

InfluxDB还帮助进行数据检查,无论是使用阈值(基于值是否高于、低于、在定义水平内或之外分配状态)还是使用“死机”检查(当序列或组在指定时间内未报告时分配状态)。然后可以根据桶值、测量字段和标签集配置查询。检查有助于监控数据,并允许用户使用插件关注数据的来源。

Telegraf是一个插件驱动的代理,支持包括输入、聚合器、处理器和输出在内的插件类别。Infosys使用插件进行项目,特别是Docker Engine和Syslog输入插件。

InfluxDB实时监控

在Infosys,InfluxDB的价值得到了证明,因为它帮助我们进行主动监控组织,自动处理自动扩展,修复数据错误以关注可追溯性、数据血缘,并围绕KPI进行协调,以在整个系统中的多个服务中协同工作。在使用InfluxDB之前,这些功能分散在整个组织中,没有明确的成就感,需要使用多个工具,耗时,并且通常没有很好地传达给其他部门。

InfluxDB任务选项有助于度量开发。InfluxData的数据收集代理Telegraf集成了Flux语言,以帮助保留率和变量操作,以及收集和报告指标。它有一个庞大的输入插件库和“即插即用”架构。Telegraf可靠地将数据发送到InfluxDB,并可以在三个快速步骤中部署:安装最新版本、配置API令牌和通过命令行终端启动Telegraf。InfluxDB的HTTPS API用于存储数据并接受具有相同协议的输入,这对于快速入门特别有帮助。

InfluxDB在UI中包含几个可视化选项。用户可以创建仪表板,以图表、热图、直方图、表格等形式显示数据。一些特别有用的可视化选项包括格式化线条颜色、为线条下方区域着色、使用游标选择要显示的数据,以及设置阈值以更改单个统计信息的颜色。

下面的UI截图显示了在Flux中开发的一个查询。它在一个指定的时间间隔内运行,在这个例子中是过去一小时,根据CPU测量进行过滤,并计算平均值。这段代码提供了过去一小时CPU利用率的平均值。

query in Flux

我计划继续使用InfluxDB开发的一个领域是Kubernetes中的DevOps。我们目前使用基于Linux的命令管理GUI。在我们使用InfluxDB的情况下,一个关键方面是不要把它仅仅作为我们环境中的另一个工具,而是一个帮助我们处理安全事件、应用程序错误和覆盖应用程序的工具,因为我们已经组建了一个更大的团队来进行协作。