Вы можете использовать функцию 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 минута), а затем усреднить его по времени, поэтому вам понадобятся правила записи или подзапросы за это.