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

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

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

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

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

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

Построена на основе OpenTelemetry  — независимого от поставщиков, отраслевого стандарта для систем наблюдаемости. Система наблюдаемости Qwen Code обеспечивает:

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

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

Note

⚠️ Особое примечание. Для этой функции требуются соответствующие изменения в коде. Данная документация предоставляется заблаговременно; для получения фактической функциональности обращайтесь к будущим обновлениям кода.

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

ПараметрПеременная окруженияФлаг CLIОписаниеДопустимые значенияЗначение по умолчанию
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 (строка)
      • sandbox_enabled (логическое значение)
      • core_tools_enabled (строка)
      • approval_mode (строка)
      • file_filtering_respect_git_ignore (логическое значение)
      • debug_mode (логическое значение)
      • truncate_tool_output_threshold (число)
      • truncate_tool_output_lines (число)
      • hooks (строка, типы событий хуков через запятую; отсутствует, если хуки отключены)
      • ide_enabled (логическое значение)
      • interactive_shell_enabled (логическое значение)
      • 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 (счётчик, целое число): увеличивается на единицу при каждом запуске CLI.

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

    • Атрибуты:
      • 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 (счётчик, целое число): подсчитывает все запросы к API.

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

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

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

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

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