Как получить среднее значение по времени только в течение дня в Прометея

В настоящее время я пытаюсь получить средний процент использования оперативной памяти за последний месяц с помощью следующего запроса:

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. Возможно, вам придется настроить его под свой часовой пояс.

Другие вопросы по тегам