Наблюдаемость с помощью OpenTelemetry
Узнайте, как включить и настроить OpenTelemetry для Qwen Code.
Ключевые преимущества
- 🔍 Аналитика использования: Понимание паттернов взаимодействия и уровня внедрения функций в вашей команде
- ⚡ Мониторинг производительности: Отслеживание времени ответа, потребления токенов и использования ресурсов
- 🐛 Отладка в реальном времени: Выявление узких мест, сбоев и паттернов ошибок по мере их возникновения
- 📊 Оптимизация рабочих процессов: Принятие обоснованных решений для улучшения конфигураций и процессов
- 🏢 Корпоративное управление: Мониторинг использования ресурсов между командами, отслеживание затрат, обеспечение соответствия требованиям и интеграция с существующей инфраструктурой мониторинга
Интеграция с OpenTelemetry
Построена на основе OpenTelemetry — независимого от поставщиков, отраслевого стандарта для систем наблюдаемости. Система наблюдаемости Qwen Code обеспечивает:
- Универсальную совместимость: экспорт данных в любой бэкенд OpenTelemetry (Aliyun, Jaeger, Prometheus, Datadog и др.);
- Стандартизированные данные: использование единых форматов и методов сбора данных во всём инструментарии;
- Будущее-proof интеграцию: подключение к существующей и будущей инфраструктуре наблюдаемости;
- Отсутствие привязки к поставщику: возможность переключаться между бэкендами без изменения кода инструментирования.
Конфигурация
⚠️ Особое примечание. Для этой функции требуются соответствующие изменения в коде. Данная документация предоставляется заблаговременно; для получения фактической функциональности обращайтесь к будущим обновлениям кода.
Вся телеметрия управляется через файл .qwen/settings.json.
Эти настройки можно переопределить с помощью переменных окружения или флагов CLI.
| Параметр | Переменная окружения | Флаг CLI | Описание | Допустимые значения | Значение по умолчанию |
|---|---|---|---|---|---|
enabled | QWEN_TELEMETRY_ENABLED | --telemetry / --no-telemetry | Включить или отключить телеметрию | true/false | false |
target | QWEN_TELEMETRY_TARGET | --telemetry-target <local|qwen> | Куда отправлять данные телеметрии | "qwen"/"local" | "local" |
otlpEndpoint | QWEN_TELEMETRY_OTLP_ENDPOINT | --telemetry-otlp-endpoint <URL> | Конечная точка OTLP-коллектора | Строка URL | http://localhost:4317 |
otlpProtocol | QWEN_TELEMETRY_OTLP_PROTOCOL | --telemetry-otlp-protocol <grpc|http> | Протокол передачи OTLP | "grpc"/"http" | "grpc" |
outfile | QWEN_TELEMETRY_OUTFILE | --telemetry-outfile <path> | Сохранять данные телеметрии в файл (переопределяет otlpEndpoint) | Путь к файлу | — |
logPrompts | QWEN_TELEMETRY_LOG_PROMPTS | --telemetry-log-prompts / --no-telemetry-log-prompts | Включать промпты в логи телеметрии | true/false | true |
useCollector | QWEN_TELEMETRY_USE_COLLECTOR | — | Использовать внешний OTLP-коллектор (расширенный режим) | true/false | false |
Примечание о булевых переменных окружения: Для булевых параметров (enabled, logPrompts, useCollector) установка соответствующей переменной окружения в значение true или 1 включает функцию. Любое другое значение отключает её.
Для подробной информации обо всех параметрах конфигурации см. Руководство по конфигурации.
Телеметрия Aliyun
Прямой экспорт (рекомендуется)
Отправляет телеметрию напрямую в сервисы Aliyun. Сборщик не требуется.
- Включите телеметрию в файле
.qwen/settings.json:{ "telemetry": { "enabled": true, "target": "qwen" } } - Запустите Qwen Code и отправьте запросы.
- Просмотрите журналы и метрики в консоли Aliyun.
Локальная телеметрия
Для локальной разработки и отладки вы можете собирать данные телеметрии локально:
Вывод в файл (рекомендуется)
- Включите телеметрию в файле
.qwen/settings.json:{ "telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "", "outfile": ".qwen/telemetry.log" } } - Запустите Qwen Code и отправьте запросы.
- Просмотрите журналы и метрики в указанном файле (например,
.qwen/telemetry.log).
Экспорт на основе коллекционера (расширенный)
- Запустите скрипт автоматизации:
Это приведёт к следующему:
npm run telemetry -- --target=local- Скачиванию и запуску Jaeger и OTEL-коллекционера;
- Настройке рабочей области для локальной телеметрии;
- Доступности интерфейса Jaeger по адресу http://localhost:16686 ;
- Сохранению журналов и метрик в файл
~/.qwen/tmp/<projectHash>/otel/collector.log; - Остановке коллекционера при завершении работы (например, по нажатию
Ctrl+C).
- Запустите Qwen Code и отправьте запросы.
- Просматривайте трассировки по адресу 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_namefunction_argsduration_mssuccess(логическое значение)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.- Атрибуты:
modelrequest_text(если применимо)
- Атрибуты:
-
qwen-code.api_error: Это событие происходит при неудачном выполнении запроса к API.- Атрибуты:
modelerrorerror_typestatus_codeduration_msauth_type
- Атрибуты:
-
qwen-code.api_response: Это событие происходит при получении ответа от API Qwen.- Атрибуты:
modelstatus_codeduration_mserror(необязательно)input_token_countoutput_token_countcached_content_token_countthoughts_token_counttool_token_countresponse_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_namesuccess(логическое значение)decision(строка: «accept», «reject» или «modify», если применимо)tool_type(строка: «mcp» или «native», если применимо)
- Атрибуты:
-
qwen-code.tool.call.latency(гистограмма, мс): измеряет задержку вызова инструмента.- Атрибуты:
function_namedecision(строка: «accept», «reject» или «modify», если применимо)
- Атрибуты:
-
qwen-code.api.request.count(счётчик, целое число): подсчитывает все запросы к API.- Атрибуты:
modelstatus_codeerror_type(если применимо)
- Атрибуты:
-
qwen-code.api.request.latency(гистограмма, мс): измеряет задержку запросов к API.- Атрибуты:
model
- Атрибуты:
-
qwen-code.token.usage(счётчик, целое число): подсчитывает количество использованных токенов.- Атрибуты:
modeltype(строка: «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: (целое число) — количество токенов в контексте после сжатия.
- Атрибуты: