0

我正在使用 kapacitor 编写我的第一个脚本。我写了一个tick文件。以下是脚本。

stream
        .from().measurement('cpu')
                .where("cpu" == 'cpu-total')
        .alert()
                .info(lamda:TRUE)
                .log('/tmp/cpu.log')

我正在使用以下命令将刻度文件定义为 kapacitor

kapacitor define highcpu -type stream -dbrp telegraf.default -tick cpu.tick

出现跟随错误

invalid TICKscript: parser: unexpected unknown state, last char: ':' line 5 char 14 in "info(lamda:TRUE)". expected: ")"

我并没有完全出错。我确信 config、telegraf 和 influxdb 没有任何问题。

Kapacitor 版本 1.3.1 操作系统:Fedora 22

4

2 回答 2

3

lamda 中缺少“b”。应该是:λ。

于 2017-08-01T17:33:22.230 回答
0

问:我并没有完全出错。

A:简短的回答,语法错误。

不幸的是,KapacitorTICK脚本的解析器还没有那么成熟,你真的不能为此责怪他们。这个项目还是个婴儿,因此这些错误只会在运行时出现。

问题在于您的 lambda 表达式.info(lamda:TRUE)。您需要告诉表达式哪个fieldtag查找它的值。

一个典型的lambda表达式看起来像

  1. info(lambda: if ("sum" >= 45000, '1', '0'))
  2. info(lambda: "isPeakHour" == 'true')

这里需要注意的是,还没有TrueFalse在 Kapacitor 中。1or0通常用于表示布尔值。

您可能还需要注意 TICK 脚本中的single quotedouble quotes

  • 单引号是字符串文字
  • 双引号是对字段或标签的引用。双引号仅用于 lambda 表达式。
于 2017-07-26T01:18:13.923 回答