不允许批量查询向“”“”请求数据

batch query is not allowed to request data from "".""

我开始使用 Kapacitor 并一直在尝试 运行 first guide in the Kapacitor documentation, but with data I already have. I managed to define a task, but I can neither enable it nor can I run a backfill. I came across this question,这与我的问题类似,但那里的答案没有帮助。与那里的错误消息相反,我得到了数据库、保留策略、and/or 测量的空字符串。

在 Kapacitor 配置中,我设置了一个 InfluxDB 连接到名为 localhost 的本地主机实例(它有一个数据库 mydb 和测量值 weather.current.cloudsweather.current.visibility使用默认保留策略 autogen) 并创建了以下 weathertest.tick 脚本:

dbrp "mydb"."autogen"

var clouds = batch
  |query('select mean(value) / 100.0 as val from "mydb"."autogen"."weather.current.clouds"')
    .period(1h)
    .every(1h)
    .groupBy(time(1m), *)
    .fill(0)

var vis = batch
  |query('select mean(value) / 10000.0 as val from "mydb"."autogen"."weather.current.visibility"')
    .period(1h)
    .every(1h)
    .groupBy(time(1m), *)
    .fill(0)

clouds
  |join(vis)
    .as('c', 'v')
  |eval(lambda: 100 * (1 - "c.val") * "v.val")
    .as('pcent')
  |influxDBOut()
    .cluster('localhost')
    .database('mydb')
    .retentionPolicy('autogen')
    .measurement('testmetric')
    .tag('host', 'myhost.local')
    .tag('key', 'weather.current.lightidx')

这是我经过数小时的试验和(尤其是)错误后得出的结论。如标题所示,当我尝试使用 kapacitor enable weathertest 启用我的任务时,我收到错误消息 enabling task weathertest: batch query is not allowed to request data from "".""。当我尝试在 "Backfill" example 中记录时,情况相同。此外,在该示例中,还有用于限制时间范围的开始日期和结束日期。给出的时间格式是错误的,Kapacitor 无法理解。而不是e。 G。 2015-10-01 我必须输入 2015-10-01T00:00Z 以使其至少传递有关时间格式错误的错误消息。

在 Kapacitor 日志中没有一行关于这些错误,只有当我尝试删除记录时,我得到类似 remove /var/lib/kapacitor/replay/1f5...750.brpl: no such file or directory 的内容,这可以在日志中找到。日志中有很多 info 行显示成功的 POST to/from InfluxDB _internal 数据库,HTTP 响应结果为 204。

有没有人知道我可能做错了什么?

好的,周末过后我又试了一次。没有任何更改,它现在在失败的步骤中接受了我的脚本,但是,现在我能够在日志中找到错误消息。提到的节点是 eval 节点并指向类型不匹配。当我更改行时

|eval(lambda: 100 * (1 - "c.val") * "v.val")

|eval(lambda: 100.0 * (1.0 - "c.val") * "v.val")

错误消息消失了,命令 kapacitor show weathertest 现在显示了相当合理的内容。

此外,我在测试期间一遍又一遍地重新定义、记录、重放和删除任务和记录,我可能在更改 tick 脚本后忘记重新定义任务(不太确定)。修改完上面的内容,重新定义任务并重放之后,我终于在 InfluxDB 实例中找到了预期的数据。