Skip to Content
Руководство разработчикаDevelopmentТелеметрия

Наблюдаемость с помощью OpenTelemetry

Узнайте, как включить и настроить OpenTelemetry для Qwen Code.

Ключевые преимущества

  • 🔍 Аналитика использования: Понимание моделей взаимодействия и внедрения функций в вашей команде
  • ⚡ Мониторинг производительности: Отслеживание времени отклика, потребления токенов и использования ресурсов
  • 🐛 Отладка в реальном времени: Выявление узких мест, сбоев и шаблонов ошибок по мере их возникновения
  • 📊 Оптимизация рабочих процессов: Принятие обоснованных решений для улучшения конфигураций и процессов
  • 🏢 Корпоративное управление: Мониторинг использования в командах, отслеживание затрат, обеспечение соответствия требованиям и интеграция с существующей инфраструктурой мониторинга

Интеграция с OpenTelemetry

Основанная на OpenTelemetry  — независимом от поставщика, отраслевом стандарте фреймворка наблюдаемости — система наблюдаемости Qwen Code предоставляет:

  • Универсальную совместимость: Экспорт в любой бэкенд OpenTelemetry (Aliyun, Jaeger, Prometheus, Datadog и др.)
  • Стандартизированные данные: Использование согласованных форматов и методов сбора данных в вашем инструментарии
  • Интеграцию, устойчивую к будущему: Подключение к существующей и будущей инфраструктуре наблюдаемости
  • Отсутствие привязки к поставщику: Переключение между бэкендами без изменения вашей инструментации

Конфигурация

Note

⚠️ Важное замечание: Для работы этой функции требуются соответствующие изменения в коде. Эта документация предоставляется заранее; пожалуйста, следите за будущими обновлениями кода для получения актуальной функциональности.

Всем поведением телеметрии управляют через ваш файл .qwen/settings.json. Эти настройки могут быть переопределены переменными окружения или флагами командной строки.

НастройкаПеременная окруженияФлаг командной строкиОписаниеЗначенияПо умолчанию
enabledQWEN_TELEMETRY_ENABLED--telemetry / --no-telemetryВключить или отключить телеметриюtrue/falsefalse
targetQWEN_TELEMETRY_TARGET--telemetry-target <local|qwen>Куда отправлять данные телеметрии"qwen"/"local""local"
otlpEndpointQWEN_TELEMETRY_OTLP_ENDPOINT--telemetry-otlp-endpoint <URL>Конечная точка сборщика OTLPстрока URLhttp://localhost:4317
otlpProtocolQWEN_TELEMETRY_OTLP_PROTOCOL--telemetry-otlp-protocol <grpc|http>Транспортный протокол OTLP"grpc"/"http""grpc"
outfileQWEN_TELEMETRY_OUTFILE--telemetry-outfile <path>Сохранять телеметрию в файл (переопределяет otlpEndpoint)путь к файлу-
logPromptsQWEN_TELEMETRY_LOG_PROMPTS--telemetry-log-prompts / --no-telemetry-log-promptsВключать промпты в журналы телеметрииtrue/falsetrue
useCollectorQWEN_TELEMETRY_USE_COLLECTOR-Использовать внешний сборщик OTLP (для опытных)true/falsefalse

Примечание о булевых переменных окружения: Для булевых настроек (enabled, logPrompts, useCollector), установка соответствующей переменной окружения в true или 1 активирует функцию. Любое другое значение отключит её.

Для подробной информации обо всех параметрах конфигурации см. Руководство по конфигурации.

Телеметрия Aliyun

Прямой экспорт (рекомендуется)

Отправляет телеметрию напрямую в сервисы Aliyun. Коллектор не требуется.

  1. Включите телеметрию в вашем файле .qwen/settings.json:
    { "telemetry": { "enabled": true, "target": "qwen" } }
  2. Запустите Qwen Code и отправьте запросы.
  3. Просмотрите логи и метрики в консоли Aliyun.

Локальная телеметрия

Для локальной разработки и отладки вы можете собирать данные телеметрии локально:

Вывод в файл (рекомендуется)

  1. Включите телеметрию в вашем файле .qwen/settings.json:
    { "telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "", "outfile": ".qwen/telemetry.log" } }
  2. Запустите Qwen Code и отправьте запросы.
  3. Просмотрите логи и метрики в указанном файле (например, .qwen/telemetry.log).

Экспорт на основе коллектора (для продвинутых)

  1. Запустите скрипт автоматизации:
    npm run telemetry -- --target=local
    Это сделает следующее:
    • Скачает и запустит Jaeger и OTEL коллектор
    • Настроит ваше рабочее пространство для локальной телеметрии
    • Предоставит интерфейс Jaeger по адресу http://localhost:16686 
    • Сохранит логи/метрики в ~/.qwen/tmp/<projectHash>/otel/collector.log
    • Остановит коллектор при выходе (например, Ctrl+C)
  2. Запустите Qwen Code и отправьте запросы.
  3. Просмотрите трассировки по адресу http://localhost:16686 , а логи/метрики — в файле лога коллектора.

Логи и метрики

В следующем разделе описывается структура логов и метрик, генерируемых для Qwen Code.

  • sessionId включается как общее свойство во все логи и метрики.

Логи

Логи — это записи с меткой времени о конкретных событиях. Для Qwen Code записываются следующие события:

  • qwen-code.config: Это событие происходит один раз при запуске и содержит конфигурацию CLI.

    • Атрибуты:
      • model (строка)
      • embedding_model (строка)
      • sandbox_enabled (булево значение)
      • core_tools_enabled (строка)
      • approval_mode (строка)
      • api_key_enabled (булево значение)
      • vertex_ai_enabled (булево значение)
      • code_assist_enabled (булево значение)
      • log_prompts_enabled (булево значение)
      • file_filtering_respect_git_ignore (булево значение)
      • debug_mode (булево значение)
      • mcp_servers (строка)
      • output_format (строка: “text” или “json”)
  • qwen-code.user_prompt: Это событие происходит, когда пользователь отправляет запрос.

    • Атрибуты:
      • prompt_length (целое число)
      • prompt_id (строка)
      • prompt (строка, этот атрибут исключается, если log_prompts_enabled установлен в false)
      • auth_type (строка)
  • qwen-code.tool_call: Это событие происходит при каждом вызове функции.

    • Атрибуты:
      • function_name
      • function_args
      • duration_ms
      • success (булево значение)
      • decision (строка: “accept”, “reject”, “auto_accept” или “modify”, если применимо)
      • error (если применимо)
      • error_type (если применимо)
      • content_length (целое число, если применимо)
      • metadata (если применимо, словарь строка → любой тип)
  • qwen-code.file_operation: Это событие происходит при каждой операции с файлом.

    • Атрибуты:
      • tool_name (строка)
      • operation (строка: “create”, “read”, “update”)
      • lines (целое число, если применимо)
      • mimetype (строка, если применимо)
      • extension (строка, если применимо)
      • programming_language (строка, если применимо)
      • diff_stat (строка JSON, если применимо): Строка JSON со следующими полями:
        • ai_added_lines (целое число)
        • ai_removed_lines (целое число)
        • user_added_lines (целое число)
        • user_removed_lines (целое число)
  • qwen-code.api_request: Это событие происходит при выполнении запроса к API Qwen.

    • Атрибуты:
      • model
      • request_text (если применимо)
  • qwen-code.api_error: Это событие происходит, если запрос к API завершается ошибкой.

    • Атрибуты:
      • model
      • error
      • error_type
      • status_code
      • duration_ms
      • auth_type
  • qwen-code.api_response: Это событие происходит при получении ответа от API Qwen.

    • Атрибуты:
      • model
      • status_code
      • duration_ms
      • error (опционально)
      • input_token_count
      • output_token_count
      • cached_content_token_count
      • thoughts_token_count
      • tool_token_count
      • response_text (если применимо)
      • auth_type
  • qwen-code.tool_output_truncated: Это событие происходит, когда вывод вызова инструмента слишком большой и усекается.

    • Атрибуты:
      • tool_name (строка)
      • original_content_length (целое число)
      • truncated_content_length (целое число)
      • threshold (целое число)
      • lines (целое число)
      • prompt_id (строка)
  • qwen-code.malformed_json_response: Это событие происходит, когда ответ generateJson от API Qwen не может быть распознан как JSON.

    • Атрибуты:
      • model
  • qwen-code.flash_fallback: Это событие происходит, когда Qwen Code переключается на режим flash в качестве резервного варианта.

    • Атрибуты:
      • auth_type
  • qwen-code.slash_command: Это событие происходит, когда пользователь выполняет команду с косой чертой.

    • Атрибуты:
      • command (строка)
      • subcommand (строка, если применимо)
  • qwen-code.extension_enable: Это событие происходит, когда расширение активируется.

  • qwen-code.extension_install: Это событие происходит, когда расширение устанавливается.

    • Атрибуты:
      • extension_name (строка)
      • extension_version (строка)
      • extension_source (строка)
      • status (строка)
  • qwen-code.extension_uninstall: Это событие происходит, когда расширение удаляется.

Метрики

Метрики — это числовые измерения поведения за определенный период времени. Для Qwen Code собираются следующие метрики (названия метрик остаются qwen-code.* для совместимости):

  • qwen-code.session.count (Счетчик, Int): Увеличивается на единицу при каждом запуске CLI.

  • qwen-code.tool.call.count (Счетчик, Int): Подсчитывает количество вызовов инструментов.

    • Атрибуты:
      • function_name
      • success (булево значение)
      • decision (строка: “accept”, “reject” или “modify”, если применимо)
      • tool_type (строка: “mcp” или “native”, если применимо)
  • qwen-code.tool.call.latency (Гистограмма, мс): Измеряет задержку вызова инструмента.

    • Атрибуты:
      • function_name
      • decision (строка: “accept”, “reject” или “modify”, если применимо)
  • qwen-code.api.request.count (Счетчик, Int): Подсчитывает все запросы к API.

    • Атрибуты:
      • model
      • status_code
      • error_type (если применимо)
  • qwen-code.api.request.latency (Гистограмма, мс): Измеряет задержку запроса к API.

    • Атрибуты:
      • model
  • qwen-code.token.usage (Счетчик, Int): Подсчитывает количество использованных токенов.

    • Атрибуты:
      • model
      • type (строка: “input”, “output”, “thought”, “cache” или “tool”)
  • qwen-code.file.operation.count (Счетчик, Int): Подсчитывает операции с файлами.

    • Атрибуты:
      • operation (строка: “create”, “read”, “update”): Тип операции с файлом.
      • lines (Int, если применимо): Количество строк в файле.
      • mimetype (строка, если применимо): MIME-тип файла.
      • extension (строка, если применимо): Расширение файла.
      • model_added_lines (Int, если применимо): Количество строк, добавленных/измененных моделью.
      • model_removed_lines (Int, если применимо): Количество строк, удаленных/измененных моделью.
      • user_added_lines (Int, если применимо): Количество строк, добавленных/измененных пользователем в предлагаемых ИИ изменениях.
      • user_removed_lines (Int, если применимо): Количество строк, удаленных/измененных пользователем в предлагаемых ИИ изменениях.
      • programming_language (строка, если применимо): Язык программирования файла.
  • qwen-code.chat_compression (Счетчик, Int): Подсчитывает операции сжатия чата.

    • Атрибуты:
      • tokens_before: (Int): Количество токенов в контексте до сжатия.
      • tokens_after: (Int): Количество токенов в контексте после сжатия.
Last updated on