For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://docs.nvidia.com/dynamo/llms.txt. For full content including API reference and SDK examples, see https://docs.nvidia.com/dynamo/llms-full.txt.
Наблюдаемость (локально)
Обязательные переменные окружения
Установите их для каждого процесса Dynamo (frontend, router, workers), чтобы метрики, трассировки и логи начали передаваться:
| Переменная | Назначение | Обязательна |
|---|---|---|
DYN_SYSTEM_PORT=8081 | Единый системный порт (метрики + health). | Да, для метрик. |
OTEL_EXPORT_ENABLED=true | Включает экспорт OpenTelemetry. Без этого трассировки и логи никогда не покинут процесс - Loki и Tempo не покажут ничего, даже если они работают исправно. | Да, для трассировок/логов. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | OTLP gRPC endpoint для трассировок (например, http://tempo:4317). Должен быть gRPC-listener - exporter Dynamo не говорит по OTLP/HTTP, хотя OTel Collector тоже слушает :4318. | Да, для трассировок. |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP gRPC endpoint для логов (например, http://loki-otlp:4317). То же ограничение только на gRPC, что и у endpoint для трассировок выше. | Да, для логов. |
DYN_LOGGING_JSONL=true | Структурированный вывод логов в JSON (рекомендуется для Loki). | Необязательно. |
Source of truth: lib/runtime/src/logging.rs setup_logging().
Передача --enable-metrics отдельному backend'у открывает метрики только для этого backend'а. Единая поверхность метрик frontend'а (которую scrapes делает Prometheus) требует, чтобы DYN_SYSTEM_PORT был установлен и в процессе frontend'а - одной установки только на workers недостаточно.
Семейства метрик Prometheus в Dynamo регистрируются лениво: каждый набор label'ов создается только при первом срабатывании, поэтому только что запущенный процесс показывает пустые семейства метрик до первого релевантного запроса. Это ожидаемо - простой cluster не означает, что scraping сломан.
Быстрый старт
Ниже приведен пример быстрого запуска на одной машине.
Предварительные требования
Установите на машину:
Запуск стека наблюдаемости
Dynamo предоставляет стек наблюдаемости на базе Docker Compose, который включает Prometheus, Grafana, Tempo, Loki, OpenTelemetry Collector и различные exporters для метрик, трассировок, логов и визуализации.
Из корневого каталога Dynamo:
# Запустить инфраструктуру (NATS, etcd)
docker compose -f dev/docker-compose.yml up -d
# Запустить стек наблюдаемости (Prometheus, Grafana, Tempo, DCGM GPU exporter, NATS exporter)
docker compose -f dev/docker-observability.yml up -d
Подробные инструкции по настройке и конфигурации см. в Prometheus + Grafana Setup.
Документация по наблюдаемости
| Руководство | Описание | Управляющие переменные окружения |
|---|---|---|
| Metrics | Справочник доступных метрик | DYN_SYSTEM_PORT† |
| Operator Metrics (Kubernetes) | Метрики controller'а и webhook'а оператора для Kubernetes | N/A (настраивается через Helm) |
| Health Checks | Мониторинг здоровья компонентов и readiness probes | DYN_SYSTEM_PORT†, DYN_SYSTEM_STARTING_HEALTH_STATUS, DYN_SYSTEM_HEALTH_PATH, DYN_SYSTEM_LIVE_PATH, DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS |
| Tracing | Распределенные трассировки с OpenTelemetry и Tempo | DYN_LOGGING_JSONL†, OTEL_EXPORT_ENABLED†, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT†, OTEL_SERVICE_NAME† |
| Logging | Структурированные логи и экспорт OTLP-логов в Loki | DYN_LOGGING_JSONL†, DYN_LOG, DYN_LOG_USE_LOCAL_TZ, DYN_LOGGING_CONFIG_PATH, OTEL_SERVICE_NAME†, OTEL_EXPORT_ENABLED†, OTEL_EXPORTER_OTLP_TRACES_ENDPOINT†, OTEL_EXPORTER_OTLP_LOGS_ENDPOINT† |
Переменные, отмеченные †, используются несколькими системами наблюдаемости.
Руководства для разработчиков
| Руководство | Описание | Управляющие переменные окружения |
|---|---|---|
| Metrics Developer Guide | Создание пользовательских метрик на Rust и Python | DYN_SYSTEM_PORT† |
| Local Resource Monitor | Exporter VRAM / PCIe / CPU для каждого процесса, используемый для профилирования запуска engine (scrape каждые 200 ms, включается профилем) | N/A (скрипт на стороне хоста) |
Kubernetes
Для настройки и конфигурации в Kubernetes см. docs/kubernetes/observability/.
Operator Metrics: Dynamo Operator, работающий в Kubernetes, публикует собственный набор метрик для мониторинга reconciliation controller'а, проверки webhook'ов и inventory ресурсов. См. Operator Metrics Guide.
Топология
Она включает:
- Prometheus на
http://localhost:9090- сбор и запрос метрик - Grafana на
http://localhost:3000- дашборды визуализации (username:dynamo, password:dynamo) - Tempo на
http://localhost:3200- backend распределенных трассировок - Loki на
http://localhost:3100- backend агрегации логов - OpenTelemetry Collector на
http://localhost:4317(gRPC) /http://localhost:4318(HTTP) - принимает OTLP-сигналы и направляет трассировки в Tempo, а логи в Loki - DCGM Exporter на
http://localhost:9401/metrics- метрики GPU - NATS Exporter на
http://localhost:7777/metrics- метрики сообщений NATS
Диаграмма связей сервисов
graph TD
BROWSER[Browser] -->|:3000| GRAFANA[Grafana :3000]
subgraph DockerComposeNetwork [Network inside Docker Compose]
NATS_PROM_EXP[nats-prom-exp :7777 /metrics] -->|:8222/varz| NATS_SERVER[nats-server :4222, :6222, :8222]
PROMETHEUS[Prometheus server :9090] -->|:2379/metrics| ETCD_SERVER[etcd-server :2379, :2380]
PROMETHEUS -->|:9401/metrics| DCGM_EXPORTER[dcgm-exporter :9401]
PROMETHEUS -->|:7777/metrics| NATS_PROM_EXP
PROMETHEUS -->|:8000/metrics| DYNAMOFE[Dynamo HTTP FE :8000]
PROMETHEUS -->|:8081/metrics| DYNAMOBACKEND[Dynamo backend :8081]
DYNAMOFE --> DYNAMOBACKEND
DYNAMOFE -->|OTLP :4317| OTEL_COLLECTOR[OTel Collector :4317/:4318]
DYNAMOBACKEND -->|OTLP :4317| OTEL_COLLECTOR
OTEL_COLLECTOR -->|traces| TEMPO[Tempo :3200]
OTEL_COLLECTOR -->|logs| LOKI[Loki :3100]
GRAFANA -->|:9090/query API| PROMETHEUS
GRAFANA -->|:3200/query API| TEMPO
GRAFANA -->|:3100/query API| LOKI
end
Сервис dcgm-exporter в сети Docker Compose настроен на порт 9401 вместо порта по умолчанию 9400. Это сделано, чтобы избежать конфликтов портов с другими экземплярами dcgm-exporter, которые могут работать одновременно. Такая конфигурация типична для распределенных систем вроде SLURM.
Файлы конфигурации
Следующие файлы конфигурации находятся в каталоге dev/observability/:
- docker-compose.yml: Определяет сервисы NATS и etcd
- docker-observability.yml: Определяет Prometheus, Grafana, Tempo и exporters
- prometheus.yml: Содержит конфигурацию scraping для Prometheus
- grafana-datasources.yml: Содержит конфигурацию datasource для Grafana
- otel-collector.yaml: Конфигурация OpenTelemetry Collector (направляет трассировки в Tempo, логи в Loki)
- loki.yaml: Конфигурация агрегации логов Loki
- loki-datasource.yml: Datasource Loki для Grafana со связкой trace ID в Tempo
- grafana_dashboards/dashboard-providers.yml: Содержит конфигурацию provider'ов дашбордов Grafana
- grafana_dashboards/dynamo.json: Независимый от engine per-model dashboard, охватывающий метрики frontend, KV-router и workers. Можно фильтровать по
model. Подробности см. в руководстве по per-model dashboard. - grafana_dashboards/dcgm-metrics.json: Содержит конфигурацию Grafana dashboard для метрик DCGM GPU
- grafana_dashboards/kvbm.json: Содержит конфигурацию Grafana dashboard для метрик KVBM