Чтобы получить чистую Markdown-версию этой страницы, добавьте
.mdк этому URL. Полный индекс документации см. в https://docs.nvidia.com/dynamo/llms.txt. Полное содержимое, включая справочник API и примеры SDK, см. в https://docs.nvidia.com/dynamo/llms-full.txt.
Трассировка
Обзор
Dynamo поддерживает распределенную трассировку на базе OpenTelemetry для визуализации потоков запросов между компонентами Frontend и Worker. Трейсы экспортируются в Tempo через OTLP (OpenTelemetry Protocol) и визуализируются в Grafana.
Требования: Установите DYN_LOGGING_JSONL=true и OTEL_EXPORT_ENABLED=true, чтобы экспортировать трейсы в Tempo.
Примечание: Когда включен экспорт OTLP, Dynamo экспортирует и трейсы, и логи. Трейсы отправляются в Tempo, а логи - в Loki (через OpenTelemetry Collector). Чтобы отправлять логи в отдельную конечную точку, задайте OTEL_EXPORTER_OTLP_LOGS_ENDPOINT; иначе по умолчанию будет использоваться конечная точка для трейсов. Подробности см. в Logging.
Это руководство описывает настройку демо для одного GPU с использованием Docker Compose. Для развертываний в Kubernetes см. Развертывание в Kubernetes.
Примечание: Этот раздел частично пересекается с Logging of OpenTelemetry Tracing, поскольку OpenTelemetry включает аспекты и логирования, и трассировки. Подход к трассировке, описанный здесь, предназначен для постоянной визуализации и анализа трейсов. Для коротких отладочных сеансов, когда нужно изучать контекст трассировки прямо в логах, см. руководство Logging.
Переменные окружения
| Переменная | Описание | Значение по умолчанию | Пример |
|---|---|---|---|
DYN_LOGGING_JSONL | Включить формат логирования JSONL (требуется для трассировки) | false | true |
OTEL_EXPORT_ENABLED | Включить экспорт трейсов через OTLP | false | true |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | OTLP gRPC endpoint для трейсов | http://localhost:4317 | http://tempo:4317 |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP gRPC endpoint для логов (по умолчанию совпадает с endpoint для трейсов) | то же, что и для трейсов | http://localhost:4317 |
OTEL_SERVICE_NAME | Имя сервиса для идентификации компонентов | dynamo | dynamo-frontend |
Быстрый старт
1. Запустите стек наблюдаемости
Запустите стек наблюдаемости (Prometheus, Grafana, Tempo, exporters). Инструкции см. в Observability Getting Started.
2. Запустите компоненты Dynamo (один GPU)
Для простого развертывания на одном GPU запустите скрипт aggregated tracing. Этот скрипт включает трассировку, задает имена сервисов для каждого компонента и запускает frontend с одним worker vLLM:
cd examples/backends/vllm/launch
./agg_tracing.sh
Чтобы переопределить endpoint Tempo (по умолчанию http://localhost:4317):
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://tempo:4317
./agg_tracing.sh
Это запускает один aggregated worker на одном GPU, что дает более простую конфигурацию для проверки трассировки.
Альтернатива: disaggregated-развертывание (2 GPU)
Для disaggregated-развертывания с трассировкой запустите скрипт disaggregated tracing. Этот скрипт настраивает трассировку и запускает frontend, decode worker на GPU 0 и prefill worker на GPU 1:
cd examples/backends/vllm/launch
./disagg_tracing.sh
Это разделяет prefill и decode между разными GPU для более эффективного использования ресурсов.
3. Сгенерируйте трейсы
Отправляйте запросы во frontend, чтобы сгенерировать трейсы (это работает и для aggregated, и для disaggregated-развертываний). Скрипты запуска при старте выводят пример команды curl с правильным именем модели.
Совет: Добавьте заголовок x-request-id, чтобы легко искать конкретный трейc в Grafana:
curl -H 'Content-Type: application/json' \
-H 'x-request-id: test-trace-001' \
-d '{
"model": "<MODEL>",
"max_completion_tokens": 100,
"messages": [
{"role": "user", "content": "What is the capital of France?"}
]
}' \
http://localhost:8000/v1/chat/completions
4. Просмотрите трейсы в Grafana Tempo
- Откройте Grafana по адресу
http://localhost:3000 - Войдите, используя имя пользователя
dynamoи парольdynamo - Откройте Explore (иконка компаса в левой боковой панели)
- Выберите Tempo как источник данных (он должен быть выбран по умолчанию)
- В типе запроса выберите "Search" (не TraceQL и не Service Graph)
- Используйте вкладку Search, чтобы находить трейсы:
- Поиск по Service Name (например,
dynamo-frontend) - Поиск по Span Name (например,
http-request,handle_payload) - Поиск по Tags (например,
x_request_id=test-trace-001)
- Поиск по Service Name (например,
- Щелкните по трейсу, чтобы открыть подробный flame graph
Пример просмотра трейса
Ниже показано, как выглядит трейс в Grafana Tempo:

5. Остановите сервисы
Когда закончите, остановите стек наблюдаемости. Команды Docker Compose см. в Observability Getting Started.
Развертывание в Kubernetes
Для развертываний в Kubernetes убедитесь, что экземпляр Tempo развернут и доступен (например, http://tempo.observability.svc.cluster.local:4317).
Измените DynamoGraphDeployment для трассировки
Предоставлены примеры развертываний с включенной трассировкой:
- Aggregated:
examples/backends/vllm/deploy/agg_tracing.yaml - Disaggregated:
examples/backends/vllm/deploy/disagg_tracing.yaml
Они добавляют Переменные окружения к базовым развертываниям agg.yaml / disagg.yaml. Чтобы переопределить endpoint Tempo, отредактируйте OTEL_EXPORTER_OTLP_TRACES_ENDPOINT в YAML.
Примените развертывание с включенной трассировкой:
kubectl apply -f examples/backends/vllm/deploy/disagg_tracing.yaml
Трейсы теперь будут экспортироваться в Tempo и их можно будет просматривать в Grafana.