Collectd

使用 collectd 和 kapacitor - 不觸發警報

  • July 26, 2016

我試圖讓kapacitor根據influxdb中收集的數據觸發警報。我的滴答文件基於使用 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  

懷疑我在註冊任務時可能沒有正確引用數據庫,但看不到哪裡出錯了。

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

預設情況下,kapacitor 訂閱所有 Influx 數據庫。我希望它只訂閱一個數據庫,但錯誤地將其包含在“influxdb.excluded-subscriptions”部分而不是“influxdb.subscriptions”中。

您可以通過向 influxdb 發出“SHOW SUBSCRIPTIONS”查詢來查看哪些訂閱處於活動狀態。

引用自:https://serverfault.com/questions/790650