Использование collectd и kapacitor - не вызывать оповещения

Я пытаюсь заставить kapacitor запускать оповещение на основе собранных данных в influenxdb. Основываясь на моем ответном файле, я использую kapacitor с influenxdb и 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

Соответствующие данные отправляются в сборник infxdb из коллекции collectd и доступны по запросу:

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 ответ

Решение

Основной причиной была неправильная конфигурация. Обратите внимание на разделы "influenxdb.subscription" и "influenxdb.excluded-subscription" файла kapacitor.conf.

По умолчанию kapacitor подписывается на все базы данных Influx. Я хотел, чтобы он подписывался только на одну БД, но ошибочно включил это в раздел "influenxdb.excluded-subscription", а не в "influenxdb.subscription".

Вы можете увидеть, какие подписки активны, выполнив запрос "SHOW SUBSCRIPTIONS" для influenxdb.

Другие вопросы по тегам