InfluxDB Cloud 2.0中初学者常见错误修复方法
作者:Anais Dotis-Georgiou / 用例,产品,开发者
2020年8月25日
导航至
本文将回顾一些初学者常见的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()
产生以下输出
现在如果我在我的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列中后续记录之间的时间。_time列在应用count()
后被删除,所以我们收到上述错误。
此外,请在使用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)
错误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查询构建器进行以下操作:1)搜索您的存储桶,2)选择您的存储桶以验证存储桶是否存在。
其次,切换到Flux脚本编辑器以确定您的存储桶名称中是否有尾随空格。这里我们看到我们的存储桶名称确实包含尾随空格。
如果您在使用InfluxDB Cloud 2.0时遇到任何这些错误,希望这个博客对您有所帮助。如果您有任何问题,请将它们发布在社区网站上或给我们发推文@InfluxDB。谢谢!