InfluxDB 的优势和在数据科学中的应用案例
作者:社区 / 产品, 用例
2022 年 8 月 17 日
导航至
本文由 Infosys 的一位高级数据科学家撰写。
Infosys 是一家全球 IT 领导者,总部位于印度,拥有超过 20 万名员工,专注于数字化转型、人工智能/机器学习和分析。我们的组织在处理数据以协助主动异常检测、分类事件以适应数据和容量增长以及为接近 100% 的正常运行时间维护高可用性和 SLA 时面临挑战。鉴于行业形势和我们当前的用例,时间序列数据库解决方案至关重要。
我们为什么选择 InfluxDB
开发人员越来越多地使用像 InfluxDB 这样的时间序列数据库来改进时间序列数据的存储,而不是像 MySQL 这样的数据库,因为时间序列数据库允许持续监控数据。InfluxDB 是可扩展的,围绕内存、流量和 CPU 提供分析以支持容量规划和物联网解决方案。
我们选择 InfluxDB 来处理我们的数据挑战,因为它在行业内得到广泛认可,并且采用时间快。我还通过 InfluxData(InfluxDB 的构建者)举办的虚拟峰会活动了解了 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 利用率平均值。
我计划继续使用 InfluxDB 开发的一个领域是 Kubernetes 中的 DevOps。我们目前使用基于 Linux 的命令管理 GUI。在我们案例中,使用 InfluxDB 的一个关键方面是不要仅仅将其作为我们环境中的另一个工具,而是将其作为有助于解决安全事件、应用程序错误和覆盖应用程序的工具,因为我们已经获得了一个更大的团队来协同工作。