使用 collectd 和 kapacitor - 不触发警报

使用 collectd 和 kapacitor - 不触发警报

我正在尝试让 kapacitor 根据 influxdb 中的 collectd 数据触发警报。我的 tick 文件基于使用 kapacitor 与 influxdb 和 collectd

stream
// Select just the cpu measurement from our example database.
|from()
    .measurement('cpu_value')
    .where(lambda: "type" == 'percent' AND "type_instance" == 'idle')
|alert()
    .crit(lambda: "value" <  98)
    // Whenever we get an alert write it to a file.
    .log('/tmp/alerts.log')

我已经根据 kapacitor 文档定义了警报:

kapacitor define cpu_alert -type stream -tick cpu_alert.tick -dbrp collectd.default

适当的数据正在从 collectd 发送到 influxdb 并可通过查询获取:

select value from /cpu_value/ where type='percent' and type_instance = 'idle' order by time desc limit 10;

在此处输入图片描述

但是运行:

kapacitor record stream -task cpu_alert -duration 20s &

不记录任何数据:

$ kapacitor list recordings
ID                                      Type    Status    Size      Date                   
48e5c04a-68c2-44a3-ba80-f2c12d952994    stream  running   0 B       19    Jul 16 11:57 IST  

怀疑当我注册任务时我可能没有正确引用数据库,但看不到错误的地方。

答案1

根本原因是配置不正确。请注意 kapacitor.conf 文件中的“influxdb.subscriptions”和“influxdb.excluded-subscriptions”部分。

默认情况下,kapacitor 订阅所有 Influx DB。我只想让它订阅一个 DB,但错误地将其包含在“influxdb.excluded-subscriptions”部分中,而不是“influxdb.subscriptions”。

您可以通过向 influxdb 发出“SHOW SUBSCRIPTIONS”查询来查看哪些订阅处于活动状态。

相关内容