将 kapacitor 与 influxdb 和 collectd 一起使用

Jer*_*obs 1 collectd kapacitor

我正在尝试将 Kapacitor 与我们的 influxdb 和 collectd 设置集成。但是,它似乎不起作用,我不明白为什么。

Collectd 和 Influxdb 运行正常,我认为 Kapacitor 能够连接到 influxdb。在 kapacitor 日志中,我看到了这个:

[influxdb] 2016/04/22 09:46:42 I! started UDP listener for collectd_db default
Run Code Online (Sandbox Code Playgroud)

这是 collectd 记录指标的 influxdb 数据库的名称。

我创建了以下刻度文件,并将其上传到 kapacitor 并启用它:

stream
    .from().measurement('cpu_value')
    .where(lambda: "type" == "percent")
    .where(lambda: "type_instance" == "idle")
    .alert()
        .crit(lambda: "value" <  100)
        // Whenever we get an alert write it to a file.
        .log('/tmp/alerts.log')
Run Code Online (Sandbox Code Playgroud)

这只是一个测试脚本,希望能产生一些输出。

脚本已启用:

Name                          Type      Enabled   Executing Databases and Retention Policies
cpu_tick                      stream    true      true      ["collectd_db"."default"]
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到任何录音:

[centos@ip-xx-xx-xx-xx tmp]$ kapacitor list recordings
ID                                      Type    Size      Created      
Run Code Online (Sandbox Code Playgroud)

“cpu_value”是我数据库中的有效度量。

这是我在错误日志中得到的:

[cpu_alert:stream1] 2016/04/28 13:00:51 E! error while evaluating WHERE expression: name "percent" is undefined. Names in scope: time,value,host,instance,type,type_instance
Run Code Online (Sandbox Code Playgroud)

小智 6

Kapacitor 的作者在这里...

在 Kapacitor lambda 表达式中,单引号和双引号具有不同的含义。

  • 单引号表示字符串文字
  • 双引号是对数据中字段或标记的引用。

这个表达式.where(lambda: "type" == "percent")是说只保留type字段或标签值等于字段或标签值的数据点percent。根据错误

[cpu_alert:stream1] 2016/04/28 13:00:51 E!评估 WHERE 表达式时出错:名称“百分比”未定义。范围内的名称:时间、值、主机、实例、类型、类型实例

percent字段或标签不存在。

如果要过滤类型值等于percent文字的点,则需要使用单引号。

.where(lambda: "type" == 'percent')

您的下一个表达式可能也是如此。

.where(lambda: "type_instance" == 'idle')

AND如果你愿意,你也可以一起表达

.where(lambda: "type" == 'percent' AND "type_instance" == 'idle')

当 Kapacitor 找到多个where相邻的语句时,它会将它们转换为底层的 And'ed 表达式。

这是解释引号差异的相关文档https://docs.influxdata.com/kapacitor/v0.12/introduction/getting_started/#keep-the-quotes-in-mind

至于为什么没有录音,如果没有更多关于您如何尝试创建录音的上下文,我无法回答。