InfluxDB 2.0 开源版本正式发布

导航至

今天,我们自豪地宣布 InfluxDB 开源 2.0 版本现已正式向所有人发布。这是一段漫长的旅程,没有我们社区的鼎力支持和贡献,我们不可能做到这一点。这标志着 InfluxDB 平台进入了一个新时代,但这仅仅只是开始。

Getting started with InfluxDB 2.0

在我们谈论未来之前,让我们先来看看我们的团队一直在努力开发的一些令人惊叹的新功能。

对于那些只想立即开始使用的人,请查看我们的下载页面获取最新版本以及我们的入门指南和升级指南。

易于部署,默认安全

对于任何熟悉我们现有开源产品(通常被称为 TICK Stack — TelegrafInfluxDBChronografKapacitor 的缩写)的人来说,您可能会注意到的第一件事是只有一个二进制文件可以下载和安装。

新的 InfluxDB 现在在一个二进制文件中包含了时间序列数据平台所需的一切。这简化了部署和设置体验,同时保持了各个组件的强大功能和灵活性。

单个二进制文件也意味着它更容易安全,因此我们将 InfluxDB 设置为默认安全。对 InfluxDB 的每个请求都附带一个可以撤销的身份验证令牌,并且内置用户界面通过用户名和密码进行保护。

通过这些更改,您永远不必担心意外地将存储在 InfluxDB 中的数据暴露给公共互联网。

易于部署、易于管理、默认安全。开发者期望从现代开发平台获得这些特性,InfluxDB 也不例外。

下一代数据探索和分析

我们知道开发者尽快上手使用他们的数据是多么重要。我们不断从社区听到的一个反馈是,Chronograf(TICK Stack 中的“C”)可以非常轻松地快速查看进入系统的时间序列数据的形状,并简化了许多常见的管理任务。

Next-generation data exploration analytics are available in InfluxDB 2.0

InfluxDB 开源 2.0 版本延续了这种体验,它具有全新的 数据浏览器其他可视化类型,以及一种名为 Flux 的强大的新查询语言,它是专门为时间序列数据构建的。您可以快速浏览所有指标、字段和标签,并在无需使用键盘的情况下对数据应用常见的转换。

这是我们新的数据浏览器的外观

The new Data Explorer of InfluxDB

当然,对于那些希望充分发挥数据潜力的人,我们包含了一个脚本编辑器,它包括自动完成、实时语法检查以及大量的示例和文档来帮助您入门。此编辑器在 InfluxDB(数据浏览器、仪表板任务)中通用,并使用 Monaco,即 Visual Studio Code 中使用的相同编辑器。

Monaco Editor of InfluxDB

等等,但是您已经有大量基于 InfluxQL 构建的应用程序和集成?没问题。InfluxDB 2.0 被设计为 现有 InfluxDB 实例的直接替代品。这意味着如果您使用外部可视化工具进行仪表板展示或将数据写入数据库,升级后它仍然可以工作。当然,我们建议将这些连接迁移到最新的 v2 API,但它们仍然可以像以前一样正常工作。向后兼容的 API 已就位,可帮助您根据需要快速迁移。

Flux:下一代数据处理语言,用于处理数据所在位置的数据

许多用户喜欢通过 InfluxQL(我们类似 SQL 的查询语言)访问数据的简易性。作为平台的简单入门方式,这是一个体验 InfluxDB 强大功能的绝佳起点。但是,随着用例的复杂性增加,超出简单的 select 语句的范围,就会出现挑战。因此,开发者最终编写自定义应用程序逻辑来完成现代应用程序通常需要的大量复杂转换。

这有一些缺点。首先,我们希望构建一个使开发者更高效的平台,而花费在编写通用数据转换逻辑上的任何时间都会占用开发者为其自身用户和客户创造价值的时间。第二个缺点是性能。数据离存储层越远,转换速度就越慢。

Flux 的核心旨在解决这些问题。Flux 不是类似 SQL 的语言;它是一种类似于 JavaScript 或 Python 的 函数式编程语言。这意味着您可以像编程应用程序一样自定义和构建查询,将通用逻辑分离到可重用的函数和库中,从而减少您需要编写的代码总量。该代码也在尽可能靠近存储层的位置执行,直接下推许多操作,从而为您提供系统最快的性能。

数据在一起更好

Flux 还旨在与不仅仅是时间序列数据的数据一起工作(尽管那是它的专长)。它可以直接从 SQL 数据存储(例如 Postgres、Microsoft SQL Server、SQLite 和 SAP Hana)以及基于云的数据存储(例如 Google Bigtable、Amazon Athena 和 Snowflake)中提取数据。这使您可以丰富时间序列数据以提供更多上下文。以下是一些示例

  • 对于 物联网 用户,Flux 允许您将来自传感器的时间序列数据与来自关系表的信息(例如制造商、型号、设备年龄或里程)结合使用。
  • 对于 真实用户监控 (RUM),您可以使用 Flux 查找客户 ID 并连接客户姓名、定价计划和公司概况(如公司名称和位置)。
  • IT 基础设施监控 中,Flux 可以将服务器 ID 解析为软件版本和配置参数。

InfluxDB 和 Flux 让您可以使用关系数据库丰富时间序列数据<figcaption> InfluxDB 和 Flux 让您可以使用关系数据库丰富时间序列数据</figcaption>

时间遇见空间:使用 Flux 进行地理时空查询

Flux 还允许您执行地理时空查询,因此您可以按时间和位置进行过滤。这对于许多物联网用例至关重要,在这些用例中,您需要跟踪移动中的设备或 车辆。例如,下面的简单 Flux 查询允许您查询由三个坐标点组成的三角形界定的所有点。

from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "example-measurement")
  |> geo.filterRows(
    region: {
      points: [
        {lat: 40.671659, lon: -73.936631},
        {lat: 40.706543, lon: -73.749177},
        {lat: 40.791333, lon: -73.880327}
      ]
    }
  )

使用上面的查询,您将获得以下可视化数据

Flux 的地理时空库让您可以按位置和时间进行查询<figcaption> Flux 的地理时空库让您可以按位置和时间进行查询</figcaption>

开发者不仅仅需要查询数据的能力。他们希望使用数据进行构建。Flux 为我们的社区提供了最快、最强大的方式来分析数据并使用数据构建应用程序,我们迫不及待地想让您试用一下。

用于计算指标、降采样等的后台处理

与您的数据进行交互式工作可以提供强大的洞察力,但在现代系统中,这些交互式查询仅占发生的所有处理的一小部分。当与其他信息结合以产生关于正在发生的事情的知识时,流入应用程序的大部分数据会更强大。当您专注于利用洞察力时,该处理需要持续可靠地在后台发生。

InfluxDB 2.0 包含一个强大的新后台处理系统,称为任务,这些任务是使用与访问平台内存储的数据相同的 Flux 语言构建和执行的。这些任务可以完成许多强大的事情,包括聚合常用指标以提高仪表板的性能、根据完全不同系统中存储的数据计算自定义指标,或对数据进行降采样以节省长期存储成本。

任务还可以用于自动将数据推送到其他系统,从而实现关于数据的通知或警报。由于它们基于 Flux 语言,因此当我们添加新的库、功能或工具时,可以在任务中自动利用它们。

InfluxDB 任务在概念上类似于 Kapacitor(TICK 中的“K”)。但与 Kapacitor 不同,Kapacitor 使用一种称为 TICKscript 的语言,该语言与 Chronograf 中使用的 InfluxQL 是分开的,而任务使用 Flux。这简化了开发者的生活,因为他们可以使用一种语言进行数据浏览器和仪表板中的查询,以及任务中的数据处理。

任务是平台的处理骨干,我们认为您会找到一些令人惊叹的方法来使用它们。

实时警报和通知

我们公司的座右铭是,我们的团队永远不应该不得不查看仪表板才能知道出了问题。监控和警报对于任何应用程序平台都至关重要,我们也不例外。

InfluxDB 2.0 包含一个强大的监控和警报系统,该系统基于与任务和 Flux 相同的技术。我们的原生 UI 提供了一种快速定义关于数据的阈值和死信警报的方法,但如果您需要更大的灵活性,您可以使用底层任务系统构建自己的自定义警报。

使用 InfluxDB 2.0 构建自定义警报<figcaption> InfluxDB 和 Flux 让您可以将警报发送到各种端点</figcaption>

来自这些警报的通知可以发送到任意数量的外部系统,包括 PagerDuty、Slack、Microsoft Teams、电子邮件、MQTT 或您控制的自定义 HTTP 端点(webhook)。我们提供了一个直观的用户界面来定义和管理这些警报,但通过 UI 提供的每一项功能都通过我们的 API 公开,因此您可以构建适合您的自动化。

具有非常出色工具的通用 API

时间是最终的稀缺资源,对于开发者来说,在易用性与未来的强大功能和灵活性之间不断取得平衡是很常见的。借助 InfluxDB 2.0,我们希望使其入门非常简单,同时也让我们的社区确信,随着他们的用例发展和使用量增长,我们已为您做好准备。

我们的下一代平台围绕单个通用 API 构建。无论您是在笔记本电脑上本地构建应用程序,还是在全球范围内扩展到数百万用户,您围绕其构建应用程序的 API 都是相同的。

这也使我们能够提供一套强大的 命令行工具跨 10 种语言的特定于语言的客户端库 和 SDK,它们适用于我们所有产品。如果您正在构建应用程序,那么使用我们的客户端库之一是开始使用 InfluxDB 的最快方法。

InfluxDB 客户端库以多种语言提供<figcaption> InfluxDB 客户端库以多种语言提供</figcaption>

无论您现在构建什么,或者将来需要什么规模,您都可以放心,您无需重写应用程序即可利用 InfluxDB 的强大功能。

通过 InfluxDB Stacks 和模板实现的现代 GitOps 工作流程

Kubernetes 已经席卷全球,并随之而来的是 GitOps 工作流程的兴起,这使得管理和部署应用程序就像签入代码一样简单。InfluxDB 2.0 旨在利用 InfluxDB Stacks模板 无缝集成到您的 GitOps 部署策略中。

使用命令行工具,您可以快速管理平台中所有资源的状态,使用声明式配置和基于 git 的变更管理。这也使您能够构建强大的持续集成和部署管道,以使部署(更重要的是回滚)更改变得轻松。

该技术为 InfluxDB 模板功能提供支持,该功能为各种流行的技术提供开箱即用的全栈监控。InfluxDB 模板可以免费使用,并且随着专家们贡献自己的专业知识与他人分享,模板库不断增长。您可以利用 InfluxDB 社区的集体知识,同时保持自由扩展和自定义模板以适应您的确切需求。您认为自己掌握了正确的方法吗?您也可以贡献您的专业知识

InfluxDB 模板库<figcaption> InfluxDB 模板库</figcaption>

InfluxDB 2.0 使您能够充满信心地部署更改,并站在专家的肩膀上,从而使您可以专注于构建应用程序。

我们未来的方向

正如我在本文开头所说,此版本代表了我们的工程团队近两年与社区互动和倾听社区意见的辛勤工作,但这仅仅只是开始。展望未来,您可以期待一些事情。我们计划标准化我们的发布节奏,以便社区知道何时可以期待新功能和错误修复。

我们的 InfluxDB 开源路线图将开始侧重于解锁需要在本地部署软件的用例,但继续与 InfluxDB 平台的其他部分(包括 InfluxDB Cloud)协同工作。期待以简单的方式解锁数据复制和云聚合,以及更多在边缘摄取和分析数据的方式。

我们对开源软件的未来感到非常兴奋,并对我们出色的社区感到谦卑,他们帮助我们构建出色的软件。我们希望您加入我们的旅程,并在 GitHub 或我们的 社区论坛Slack 上向我们问好。