文档

使用 Flux 查询 InfluxDB

本指南将引导您了解使用 Flux 从 InfluxDB 查询数据的基本知识。每个 Flux 查询都需要以下内容

  1. 数据源
  2. 时间范围
  3. 数据过滤器

1. 定义您的数据源

Flux 的 from() 函数定义了一个 InfluxDB 数据源。它需要一个 bucket 参数。以下示例使用 example-bucket 作为桶名称。

from(bucket:"example-bucket")

2. 指定时间范围

Flux 在查询时间序列数据时需要一个时间范围。未指定范围查询的资源消耗非常大,因此作为保护措施,Flux 不会在没有指定范围的情况下查询数据库。

使用 管道前向运算符 (|>) 将数据从您的数据源传输到 range(),该运算符指定查询的时间范围。它接受两个参数:startstop。开始和结束值可以是 相对的,使用负 持续时间,或者 绝对的,使用 时间戳

示例相对时间范围
// Relative time range with start only. Stop defaults to now.
from(bucket:"example-bucket")
    |> range(start: -1h)

// Relative time range with start and stop
from(bucket:"example-bucket")
    |> range(start: -1h, stop: -10m)

相对范围相对于“现在”。

示例绝对时间范围
from(bucket:"example-bucket")
    |> range(start: 2021-01-01T00:00:00Z, stop: 2021-01-01T12:00:00Z)

使用以下

对于本指南,使用相对时间范围 -15m,将查询结果限制为最后 15 分钟的数据

from(bucket:"example-bucket")
    |> range(start: -15m)

3. 过滤您的数据

将您的时间范围数据传递到 filter() 中,以根据数据属性或列缩小结果。 filter() 有一个参数 fn,它期望一个 谓词函数,通过列值评估行。

filter() 遍历每个输入行,并将行数据结构化为 Flux 记录。记录作为 r 传递到谓词函数中,并使用 谓词表达式 进行评估。

评估为 false 的行将从输出数据中删除。评估为 true 的行将保留在输出数据中。

// Pattern
(r) => (r.recordProperty comparisonOperator comparisonExpression)

// Example with single filter
(r) => (r._measurement == "cpu")

// Example with multiple filters
(r) => (r._measurement == "cpu" and r._field != "usage_system")

使用以下

对于此示例,按 cpu 测量、usage_system 字段和 cpu-total 标记值进行筛选

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")

4. 生成您的查询数据

yield() 输出查询的结果。

from(bucket: "example-bucket")
    |> range(start: -15m)
    |> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_system" and r.cpu == "cpu-total")
    |> yield()

Flux 会自动在每个脚本末尾假设一个 yield() 函数来输出和可视化数据。只有当在同一个 Flux 查询中包含多个查询时,才需要显式调用 yield()。每组返回的数据都需要使用 yield() 函数进行命名。

恭喜!

您现在已使用 Flux 从 InfluxDB 中查询数据。

此处显示的查询是一个基本示例。Flux 查询可以通过多种方式扩展,形成强大的脚本。


这个页面有帮助吗?

感谢您的反馈!


Flux 的未来

Flux 正在进入维护模式。您可以在不更改代码的情况下继续像现在一样使用它。

阅读更多

InfluxDB v3 增强功能和 InfluxDB 集群版现在已普遍可用

包括更快的查询性能和管理工具在内的新功能推进了 InfluxDB v3 产品线。InfluxDB 集群版现在已普遍可用。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括用于监控 InfluxDB 集群健康状况的操作仪表板,InfluxDB Cloud 专用版中的单点登录(SSO)支持,以及用于令牌和数据库的新管理 API。

了解新的 v3 增强功能


InfluxDB 集群版普遍可用

InfluxDB 集群版现在已普遍可用,为您在自行管理的堆栈中提供了 InfluxDB v3 的功能。

与我们讨论 InfluxDB 集群版

InfluxDB Cloud 由 TSM 驱动