Как получить среднее значение по времени только в течение дня в Прометея
В настоящее время я пытаюсь получить средний процент использования оперативной памяти за последний месяц с помощью следующего запроса:
100 - ((avg_over_time(node_memory_MemAvailable_bytes{instance="...",job="..."}[4w]) * 100) / node_memory_MemTotal_bytes{instance="...",job="..."})
Запрос работает правильно, но теперь я хотел бы отфильтровать значения, собранные за ночь, чтобы получить реальный процент использования в течение дня: возможно ли получить среднее значение значений, собранных только между 8 утра и 8 ЧАСОВ ВЕЧЕРА?
Заранее спасибо!
Mathias
1 ответ
Поскольку у вас не может быть диапазона с дырами (то есть последние 4 недели, но только с 8:00 до 20:00), вам нужно создать записанное правило, которое записывает доступную память только в течение дня, а затем вычислить avg_over_time
в течение временного ряда, произведенного указанным правилом.
Правило относительно легко настроить
node_memory_MemAvailable_bytes
and
hour(timestamp(node_memory_MemAvailable_bytes)) >= 8
and
hour(timestamp(node_memory_MemAvailable_bytes)) < 20
но изначально у него не будет никакой истории, поэтому вам придется подождать несколько дней, прежде чем вы получите какие-либо значимые данные из него. Также обратите внимание, что это выражение будет фильтровать выборки между 8:00 UTC и 20:00 UTC. Возможно, вам придется настроить его под свой часовой пояс.