InfluxDB Cloud 2.0 初学者常见错误修复指南

导航至

在本文中,我们将回顾 InfluxDB Cloud 2.0 初学者的一些常见错误。我们将讨论可能的原因以及推荐的修复方法。本博客使用 Telegraf 系统配置和数据作为示例,来说明您可能遇到的各种错误。熟悉此数据集有助于理解问题和解决方案。但是,您可能会在自己的时间序列数据中遇到这些问题,希望这些示例能突出显示您如何解决这些问题!

错误 1:指定的列在表中不存在:_time

可能的原因:此错误的一个可能原因是使用了聚合 Flux 函数。许多聚合函数(包括 count()、mean() 和 median())会删除 _time 列,因为它们会合并行。例如,以下 Flux 查询

from(bucket: "System")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "cpu" and r["_field"] == "usage_system")
|> limit(n: 10)
|> count()

产生以下输出

common errors influxdb cloud 2 columns screenshot

现在,如果我尝试在我的 Flux 脚本中添加一个操作 _time 列的函数,我将收到上述错误。例如,以下查询将产生我们的错误

from(bucket: "System")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "cpu" and r["_field"] == "usage_system")
|> limit(n: 10)
|> count()
|> elapsed(1s)

正如我们从上面的屏幕截图中所看到的,我们的 Flux 查询输出没有 _time 列,因为 count() 计算了所有时间戳的值的总和。elapsed() 函数返回 _time 列中后续记录之间的时间。在应用 count() 之后,_time 列已被删除,因此我们收到上述错误。

此外,使用 drop() 或 keep() 函数时请务必小心。例如,在使用 keep() 函数时,请确保将 _time 作为输入参数包含在内。

推荐的修复方法:首先,我建议在调试 Flux 时,在可视化视图和原始数据视图或表格视图之间切换。养成这种习惯可以让您跟踪每次数据转换后哪些列被保留或删除。其次,当使用 count()、mean() 和 median() 等聚合函数时,尝试使用 aggregateWindow() 而不是原始函数,因为它会保留 _time 列

from(bucket: "System")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "cpu" and r["_field"] == "usage_system")
  |> limit(n: 10)
  |> aggregateWindow(every: v.windowPeriod, fn: count)
  |> elapsed(unit: 1s)

common errors influxdb cloud 2 columns dashboard

错误 2:不支持的聚合列类型字符串

可能的原因:如果您尝试在包含字符串类型的列上使用聚合函数(如 mean()),您将收到此错误。这可能意味着数值数据以带引号的字符串形式输入到平台。

推荐的修复方法:您可能需要考虑返回数据收集点并修改配置,以便以适当的数值类型输入数据。但是,在某些情况下,这根本不可能。因此,您可以首先使用以下类型转换函数之一将字符串转换为数值:int() 或 float()。

例如,您的 Flux 脚本可能如下所示

from(bucket: "bucket-name")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "measurement-name" and r["tag-key-name"] == "tag-value-name")
  |> map(fn:(r) => ({ r with tag-key-name-as-int: int(v: r.tag-key-name) }))
  |> mean(column: "tag-key-name")

错误 3:初始化执行状态失败:找不到存储桶 “bucket-name”

可能的原因:当您在 UI 中创建存储桶时,您可能不小心包含了空格。例如,您的存储桶名称可能是 “bucket-name ”。如果您直接转到 Flux 脚本编辑器并运行

from(bucket:"bucket-name")

您会收到该错误。问题 #19399 已创建以响应此问题。

推荐的修复方法:首先,使用 Flux 查询构建器来 a) 搜索您的存储桶,以及 b) 选择您的存储桶以验证您的存储桶是否存在。

common errors influxdb cloud 2 Flux query builder

其次,切换到 Flux 脚本编辑器以确定您的存储桶名称中是否包含尾随空格。在这里我们看到,我们的存储桶名称确实包含尾随空格。

common errors influxdb cloud 2 flux query builder

如果您在使用 InfluxDB Cloud 2.0 时遇到任何这些错误,我希望您觉得这篇博客很有用。如果您有任何问题,请在社区站点上发布或在 Twitter 上 @InfluxDB 告诉我们。谢谢!