как создать запрос для отслеживания того, сколько минут докер-контейнеры работали в течение дня

Я пытаюсь отслеживать контейнеры докеров, но у меня возникают проблемы при выполнении запроса, чтобы отслеживать, сколько минут контейнер работает в день.

count(rate(container_last_seen{id=~"/docker/.*",instance=~"$node"}[1d]))

это мой запрос, чтобы показать, сколько контейнеров работает в день, но я не знаю, как отслеживать, сколько минут контейнер работает в день


person northboy    schedule 11.10.2020    source источник
comment
Добро пожаловать в Stack Overflow. Пожалуйста, добавьте краткое описание, код, ошибки ваших поисков/исследований, как это предлагается.   -  person Prathamesh More    schedule 12.10.2020


Ответы (1)


Если вы знаете интервал между точками данных для метрики container_last_seen (он известен как scrape_interval и обычно настраивается в конфигурационном файле Prometheus), то можно использовать следующий запрос для расчета продолжительности в секундах, когда контейнер работал в течение последнего дня:

count_over_time(
  (changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[<3*scrape_interval>])>0)
  [1d:<3*scrape_interval>]
)*<3*scrape_interval>

Например, если scrape_interval равно 10s, то запрос будет выглядеть так:

count_over_time(
  (changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[30s])>0)
  [1d:30s]
)*30

Этот запрос использует подзапросы PromQL для вычисления числа 30s интервалов, когда container_last_seen временной ряд имел хотя бы одно изменение.

person valyala    schedule 08.11.2020