Перейти к содержанию

Метрики Prometheus

InfraVision поддерживает опциональное предоставление нативных метрик Prometheus из приложения. Prometheus — это популярная платформа метрик временных рядов, используемая для мониторинга.

InfraVision предоставляет метрики по HTTP-точке /metrics, например https://netbox.local/metrics. Предоставление метрик можно переключить с помощью параметра конфигурации METRICS_ENABLED. По умолчанию метрики не предоставляются.

Типы метрик

InfraVision использует библиотеку django-prometheus для экспорта различных типов метрик, включая:

  • Счётчики вставок, обновлений и удалений для каждой модели
  • Счётчики запросов для каждого представления
  • Гистограммы задержки запросов для каждого представления
  • Запросы REST API (по эндпоинту и методу)
  • Запросы GraphQL API
  • Гистограммы размера тела запроса
  • Гистограммы размера тела ответа
  • Счётчики кодов ответа
  • Счётчики подключений к базе данных, выполнения и ошибок
  • Счётчики попаданий, промахов и инвалидации кэша
  • Гистограммы задержки Django middleware
  • Другие метрики метаданных, связанные с Django

Для получения исчерпывающего списка предоставляемых метрик посетите точку /metrics на вашем экземпляре InfraVision.

Примечания по многопроцессорности

При развёртывании InfraVision в многопроцессорном режиме (например, запуск нескольких воркеров Gunicorn) клиентская библиотека Prometheus требует использования общего каталога для сбора метрик от всех рабочих процессов. Чтобы настроить это, сначала создайте или определите локальный каталог, к которому рабочие процессы имеют доступ на чтение и запись, а затем настройте вашу службу WSGI (например, Gunicorn) для определения этого пути как переменной окружения prometheus_multiproc_dir.

Внимание

Если наличие точных долгосрочных метрик в многопроцессорной среде критично для вашего развёртывания, рекомендуется использовать библиотеку uwsgi вместо gunicorn. Проблема заключается в том, как gunicorn отслеживает рабочие процессы (по сравнению с uwsgi), что помогает управлять файлами метрик, создаваемыми вышеуказанными конфигурациями. Если вы используете InfraVision с gunicorn в контейнеризированной среде, следуя методологии один-процесс-на-контейнер, вам, вероятно, не нужно переходить на uwsgi. Более подробную информацию можно найти в issue #3779.