上一期未在 Kapacitor recorded/replayed 数据中输出

Last period not output in Kapacitor recorded/replayed data

我正在尝试每小时汇总前一周的数据,并计算汇总统计数据,例如中位数、均值等。

我正在使用这样的东西:

var weekly_median = batch
    |query('''SELECT median("duration") as week_median
              FROM "db"."default"."profiling_metrics"''')
        .period(1w)
        .every(1h)
        .groupBy(*)
        .align()
    |influxDBOut()
        .database('default')
        .measurement('summary_metrics')

查询按预期工作,除了在记录和重放数据以进行测试时

kapacitor record batch -task medians -past 30d
kapacitor replay -task medians -recording $rid -rec-time

缺少上一时期的数据(在本例中为 1 周)。如果我将周期更改为 1 天,则会重播除最后一天之外的所有数据。

这是我的 tickscript、我记录数据的方式或我回放数据的方式的问题吗?

我明白了,我需要在 Kapacitor 中进行聚合,而不是 Influx。这似乎是一个已知问题,但很难找到有关它的文档。 https://github.com/influxdata/kapacitor/issues/1257 and https://github.com/influxdata/kapacitor/issues/1258 很有帮助。解决方案是改为执行以下操作:

var weekly_median = batch
    |query('''SELECT "duration"
              FROM "db"."default"."profiling_metrics"
              WHERE "result" =~ /passed/''')
        .period(1w)
        .every(1h)
        .groupBy(*)
        .align()
    |median('duration')
        .as('week_median')
    |influxDBOut()
        .database('default')
        .measurement('summary_metrics')