Kapacitor:定义刻度文件时出错

Kapacitor: Getting error while defining tick file

我正在编写我的第一个 kapacitor 脚本。我写了一个刻度文件。以下是脚本。

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 OS:软呢帽 22

问: 我没有弄错。

A: 简答,语法错误。

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

问题出在您的 lambda 表达式 .info(lamda:TRUE) 上。您需要告诉表达式 fieldtag 来查找其值。

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

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

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

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

  • 单引号是字符串文字
  • 双引号是对字段或标记的引用。双引号是 仅用于 lambda 表达式。

lamda 中缺少 'b'。 应该是:lambda.