2016-02-15 8 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 года, когда в БД самая старая дата 2015-01-31. Почему это происходит?

ответ

1

Я разместил issue in the Kapacitor repo, и решение моей проблемы состояло в использовании следующей строки для воспроизведения данных kapacitor replay -id RECORDING_ID -name nyc -fast -rec-time. Ключом здесь является флаг -rec-time, который решил проблему.

Kudos to Nathanielc, который решил проблему.

2

InfluxDb подает Kapacitor с данным видом в режиме реального времени (он не предназначен для возврата назад по всем вашим историческим данным, это подразумевалось как инструмент анализа времени/предупреждения).

Ваш текущий запрос в основном рассматривает только последние данные (1 час), поэтому вы видите там 2016 год. Это по дизайну. Если вы хотите проверить наличие аномалий в своих исторических данных, вам придется написать небольшую программу (например, используя библиотеку InfluxDb для выбранного вами языка), которая будет проходить через все ваши старые данные по часам, извлекать их и оттуда анализируют его. Вы также можете использовать для этого backfills.

+0

Но посмотрите, что дата говорит '2016-09-13', и мы не в эту дату (и невозможно быть в эту дату, потому что это будущее). –

+0

@MartinAparicioPons - Правда, эта часть может быть ошибкой. Возможно, вы захотите спросить на странице guxub на странице infuxdata. Какая самая новая дата у вас в притоке? Какие версии Infuxdb и Kapacitor вы используете? Я знаю, что они изменили формат timestamp, который, как я полагаю, вышел из-за того, что вышел exuxdb v0.9.6. До сих пор временные метки были временными отметками в стиле unix, после чего они стали красивыми, удобными для пользователя стандартными метками времени ISO. Так что, возможно, там есть missmatch. – pootzko

+0

Вы правы, я отправляю вопрос в репо. Я использую последнюю версию Influx и Kapacitor (0.10), доступную на веб-странице infuxData. –