Прометей рушится окно - PullRequest
0 голосов
/ 21 июня 2019

Я хотел бы иметь агрегаты из определенных временных диапазонов. Например. ежечасно, ежедневно, но ежечасно, например, с 09: 00-10: 00 (переворачивающееся окно), а не 1 час назад (перекидное окно).

Это было бы возможно, если бы мы могли вычесть счетчики, смещенные на переменное время, например ::100100

x_count offset (minutes()m) - x_count offset ((minutes()+60)m) но смещение, похоже, не оценивает функции.

Предложения о том, как этого добиться?

1 Ответ

0 голосов
/ 21 июня 2019

Вы можете использовать функцию timestamp() в сочетании с hour() и day_of_month() для фильтрации образцов, попадающих в данный час / день ; или в сочетании с time() для фильтрации образцов, попадающих в текущий час / день.

Вот тизер мозга, с которого можно начать:

up{job="prometheus"} + ignoring(year, month, day_of_month) group_right
  count_values without() ("year", year(timestamp(
    count_values without() ("month", month(timestamp(
      count_values without() ("day_of_month", day_of_month(
        timestamp(up{job="prometheus"}
      )))
    )))
  ))) * 0

Это создаст отдельные метрики для каждой комбинации year, month и day_of_month. Затем вы можете avg_over_time (или что-нибудь _over_time) по этим показателям; или объединить их по году, месяцу, дню месяца. Что-то вроде rate() будет сложнее, поскольку вам, вероятно, потребуется вычислить rate() на коротких диапазонах (например, 1 минута), а затем усреднить его по времени, поэтому вам понадобятся правила записи или подзапросы за это.

...