Kapacitor 采取了错误的时间格式
Kapacitor is taking a wrong time format
我使用 InfluxData 堆栈在时间序列数据中进行异常检测,使用 InfluxDB 和 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。为什么会这样?
InfluxDb 向 Kapacitor 提供 实时 类型的数据(它并不是真的打算倒退所有历史数据,它的意思是及时 analysis/alerting 工具)。
您当前的查询基本上只查看最近的数据 (1h),因此您会在其中看到 2016 年。这是设计使然。如果你想检查历史数据中的异常情况,你将不得不编写一个小程序(例如使用 InfluxDb 库作为你选择的语言),它会每小时检查你所有的旧数据,获取它并从那里分析它。您也可以为此使用 backfills。
我发布了一个 issue in the Kapacitor repo,我的问题的解决方案是使用以下行重播数据 kapacitor replay -id RECORDING_ID -name nyc -fast -rec-time
。这里的关键是解决问题的标志-rec-time
。
感谢 Nathanielc 解决了这个问题。
我使用 InfluxData 堆栈在时间序列数据中进行异常检测,使用 InfluxDB 和 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。为什么会这样?
InfluxDb 向 Kapacitor 提供 实时 类型的数据(它并不是真的打算倒退所有历史数据,它的意思是及时 analysis/alerting 工具)。
您当前的查询基本上只查看最近的数据 (1h),因此您会在其中看到 2016 年。这是设计使然。如果你想检查历史数据中的异常情况,你将不得不编写一个小程序(例如使用 InfluxDb 库作为你选择的语言),它会每小时检查你所有的旧数据,获取它并从那里分析它。您也可以为此使用 backfills。
我发布了一个 issue in the Kapacitor repo,我的问题的解决方案是使用以下行重播数据 kapacitor replay -id RECORDING_ID -name nyc -fast -rec-time
。这里的关键是解决问题的标志-rec-time
。
感谢 Nathanielc 解决了这个问题。