У меня есть случай, когда кратковременные (от секунд до 1-2 минут) задания k8s будут создаваться по запросу пользователя. Я пытаюсь получить показатели времени выполнения задания (например, использование процессора и памяти).
Методы, о которых я думал (и пробовал), включают:
- Запрос Prometheus, как и
container_cpu_usage_seconds_total
, но scape на основе pull означает, что многие краткосрочные задания не будут включены - Pushgateway, но, как предлагает prometheus, ...valid вариант использования Pushgateway — сбор результатов пакетного задания на уровне обслуживания, поэтому я сомневаюсь, что это не подходящий случай.
- Metric-server, но metric-server возвращает 404 только для недолговечных пакетов заданий, что приводит к худшим результатам, чем Prometheus.
- Запросите
/api/v1/nodes/{nodeName}/proxy/metrics/cadvisor
напрямую. Хотя почти в реальном времени он возвращает все контейнеры, поэтому мне приходится вручную анализировать результаты и находить то, что мне нужно.
Я думаю об использовании легкого контейнера монитора рядом с контейнером работника для получения показателей работника. Но я не знаю, хорошая ли это идея, и даже если да, то как получить метрики воркера.
Итак, мой вопрос:
Какой метод вы рекомендуете для получения большого количества краткосрочных заданий использования процессора и памяти?