0

我开始使用 Kapacitor 并且一直在尝试运行 Kapacitor 文档中的第一个指南,但是我已经拥有了数据。我设法定义了一个任务,但我既不能启用它也不能运行回填。我遇到了这个问题,这与我的问题相似,但那里的答案没有帮助。与那里的错误消息相反,我得到了用于数据库、保留策略和/或测量的空字符串。

localhost在 Kapacitor 配置中,我使用名称(具有数据库mydb和测量值weather.current.clouds以及weather.current.visibility默认保留策略)设置了与本地主机实例的 InfluxDB 连接,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 "".""。当我尝试像在“回填”示例中那样记录时,情况相同。此外,在该示例中,还有用于限制时间范围的开始日期和停止日期。那里给出的时间格式是错误的,Kapacitor 不理解。而不是例如,2015-10-01我必须输入2015-10-01T00:00Z以使其至少传递有关时间格式错误的错误消息。

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

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

4

1 回答 1

0

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

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

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

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

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

于 2020-05-15T11:41:02.043 回答