2016-02-15 39 views
1

我使用InfluxData堆棧進行時間序列數據異常檢測,使用InfluxDB和Kapacitor。Kapacitor採取錯誤的時間格式

我收集了一些開源samples,並設置用於檢測異常以下蜱腳本:

batch 
    .query('select mean(value) from "nycTaxi"."default"."nycTaxi"') 
     .period(1h) 
     .every(2h) 
     .groupBy(time(1h)) 
.mapReduce(influxql.percentile('mean', 90.0)) 
    .eval(lambda: sigma("percentile")) 
     .as('sigma') 
     .keep('percentile', 'sigma') 
    .alert() 
     .warn(lambda: "sigma" > 2.0) 
     .log('/path/alerts.log') 
     .crit(lambda: "sigma" > 3.0) 
     .log('/path/alerts.log') 

獲取警報類似如下:

{"id":"nycTaxi:nil", 
    "message":"nycTaxi:nil is WARNING", 
    "time":"2016-09-13T14:43:21.892057062Z", 
    "level":"WARNING", 
    "data":{ 
    "series":[ 
     { 
     "name":"nycTaxi", 
     "columns":[ 
      "time", 
      "percentile", 
      "sigma" 
     ], 
     "values":[ 
      [ 
      "2016-09-13T14:43:21.892057062Z", 
      1279, 
      2.002345963142575 
    ]]}]}} 

要記錄我用這個線路上的數據kapacitor record batch -start 2014-07-01T00:00:00Z -stop 2015-02-31T00:00:00Z -name nyc

由於某種原因,Kapacitor將時間解釋爲2016年的日期,在DB中最早的日期是2015年-01-31。爲什麼會發生?

回答

1

我發佈了一個issue in the Kapacitor repo,我的問題的解決方案是使用以下行重播數據kapacitor replay -id RECORDING_ID -name nyc -fast -rec-time。這裏的關鍵是標誌-rec-time解決了這個問題。

榮譽解決問題的Nathanielc

2

InfluxDb實時向數據類型供應Kapacitor(它並不真正意圖通過所有的歷史數據倒退,它是指作爲實時分析/警報工具)。

您目前的查詢基本上只是查看最近的數據(1小時),所以這就是爲什麼你在那裏看到2016年。這是設計。如果您想檢查歷史數據中的異常情況,則必須編寫一個小程序(例如,使用您選擇的語言的InfluxD庫),該程序將按小時逐個讀取所有舊數據,並將其讀取並從那裏分析它。你也可以使用backfills

+0

但是看到日期說的是'2016-09-13',我們不在那個日期(並且因爲未來而不可能在那個日期)。 –

+0

@MartinAparicioPons - 確實,這部分可能是一個錯誤。你可能想問influxdata github頁面。你有什麼最新的日期涌入?你使用哪種版本的influxdb和kapacitor?我知道他們改變了我認爲influxdb v0.9.6發佈時的時間戳格式。直到那時,時間戳纔是unix樣式的時間戳,之後它們變得很好,人們可讀的ISO標準時間戳。所以也許這裏有一個錯誤。 – pootzko

+0

你說得對,我正在回購一個問題。我正在使用InfluxData網頁上提供的Influx和Kapacitor(0.10)的最新版本。 –