Перейти к основному содержимому

Чтобы получить чистую 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 (требуется для трассировки)falsetrue
OTEL_EXPORT_ENABLEDВключить экспорт трейсов через OTLPfalsetrue
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTLP gRPC endpoint для трейсовhttp://localhost:4317http://tempo:4317
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTLP gRPC endpoint для логов (по умолчанию совпадает с endpoint для трейсов)то же, что и для трейсовhttp://localhost:4317
OTEL_SERVICE_NAMEИмя сервиса для идентификации компонентовdynamodynamo-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

  1. Откройте Grafana по адресу http://localhost:3000
  2. Войдите, используя имя пользователя dynamo и пароль dynamo
  3. Откройте Explore (иконка компаса в левой боковой панели)
  4. Выберите Tempo как источник данных (он должен быть выбран по умолчанию)
  5. В типе запроса выберите "Search" (не TraceQL и не Service Graph)
  6. Используйте вкладку Search, чтобы находить трейсы:
    • Поиск по Service Name (например, dynamo-frontend)
    • Поиск по Span Name (например, http-request, handle_payload)
    • Поиск по Tags (например, x_request_id=test-trace-001)
  7. Щелкните по трейсу, чтобы открыть подробный flame graph

Пример просмотра трейса

Ниже показано, как выглядит трейс в Grafana Tempo:

Trace Example

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.