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

#prometheus #grafana #prometheus-alertmanager #promql

#prometheus #графана #prometheus-alertmanager #promql

Вопрос:

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

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

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

Комментарии:

1. Добро пожаловать в Stack Overflow. Пожалуйста, добавьте краткое описание, код, ошибки ваших поисковых / исследовательских работ, как предлагается.

Ответ №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 временные ряды имели хотя бы одно изменение.