@valyala извини меня за глупые вопросы, я пока еще учусь :) хочу пояснить свой контекст:
предположим, стоит задача - учитывать в SLA количество минут когда error rate был меньше 20%, то есть если SLA 50% за 2 дня значит что как минимум половину этого времени он был больше указанного порога
в проме я это решаю следующим образом:
1) задаю правило которое высчитывает количество минут - потому что пром не умеет range из instant:
- name: rps_less20
interval: 1m
rules:
- record: errrateless02:up
expr: sum(rate(http_request_duration_milliseconds_count{status=~"5.."}[5m])) / sum(rate(http_request_duration_milliseconds_count[5m])) < bool 0.2
- record: errrateless02:up_minutes
expr: clamp_max(sum_over_time(errrateless02:up[1m]), 1)
2) подсчитываю соответствующий SLA:
sum_over_time(errrateless02:up_minutes[2d]) / (2 * 24 * 60)
не знаю правда правильно или нет считает, не тестил пока на реальных данных - но идея такая
минус тут в том что надо фиксировано прописывать правило для каждого из порогов а хочется гибко в риалтайме изменять порог по запросу, ну и плюс правила начинают высчитываться только с момента создания то есть старые данные не пересчитать
ты скинул прикольную функцию, подумал может как-то вокруг нее можно и вышеописанную проблему решить, только поспешил и с телефона неправильно спросил