Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Агенты программирования искусственного интеллекта — GitHub Copilot, Claude Code, Codex, OpenClaw, OpenCode, Gemini CLI и другие — быстро становятся частью того, как инженерии отправляют программное обеспечение. Внедрение — это простая часть. Более трудные вопросы следуют вскоре после:
- Сколько мы тратим? Какие модели, какие команды и какие задачи управляют затратами?
- Кто на самом деле использует какой агент и для чего? Вызываются ли средства так, как вы ожидаете?
- Является ли опыт надежным? Где агенты зависают, сталкиваются с ошибками или оставляют сеансы в подвешенном состоянии?
- Можем ли мы проверить, что сделали агенты? Запросы, вызовы инструментов и выбор модели для проверки безопасности и соответствия требованиям.
Grafana предоставляет единообразный интерфейс для решения этих задач среди нескольких агентов разработки. В этом руководстве рассматривается полная настройка: установка конвейера телеметрии, указание каждого агента на него и импорт готовых панелей управления.
Note
Сборщик OpenTelemetry (включая дистрибутив contrib) и Azure Monitor Exporter являются компонентами с открытым исходным кодом. Поддержка этих компонентов предоставляется исключительно через каналы сообщества. Чтобы отправить отчеты об ошибках, запросить новые функции или сообщить о других проблемах, создайте новую проблему в репозитории opentelemetry-collector-contrib . поддержка Microsoft Azure охватывает службы Azure в этом конвейере: Application Insights, Log Analytics и Grafana.
Что вы увидите
Специально разработанные панели мониторинга Grafana визуализируют сигналы, важные для ИИ-агентов для программирования, — затраты, потребление токенов, сеансы, использование моделей, вызовы инструментов, латентность и ошибки:
| Dashboard | Что это показывает |
|---|---|
| GitHub Copilot | Операции, токены ввода и вывода, сеансы чата, вызовы инструментов, время отклика и время до получения первого токена (TTFT) по моделям |
| Код Клода | Затраты, сеансы, команды пользователей, запросы и ошибки API, тенденции ежедневных затрат и токенов, разбивка по моделям, аналитика использования инструментов |
| Кодекс | Сеансы, ходы, использование токенов по типу и модели, процентили задержки хода и TTFT, надежность и задержка инструментов, активность песочницы/подтверждений, сеансы по клиентам |
| OpenClaw | Сообщения, уникальные чаты, время ответа, вызовы LLM, использование маркеров, чтение кэша, застрявшие сеансы, разбивка использования модели |
| OpenCode | Сеансы, запросы, вызовы LLM, использование маркеров, выполнение инструментов, задержка запроса p95, коэффициент попаданий кэша, разбивка по модели или поставщику |
| Интерфейс командной строки Gemini | Трассировки, запросы, вызовы инструментов и контекст сеанса |
Кому это руководство предназначено
Те же панели мониторинга служат разным аудиториям:
- Команды по работе с платформами и по разработке — отслеживайте тенденции внедрения, анализируйте расходы по командам и моделям, и обнаруживайте неэффективные шаблоны использования.
- Лидеры в области инженерии — соотносят деятельность агента с доставкой и ответят на вопрос "окупаются ли эти инвестиции?"
- Команды по безопасности и управлению — проверка запросов, вызовов инструментов и выбор модели для соответствия требованиям и рискам.
- Отдельные разработчики и инженеры по вызову — поведение агента отладки, медленные вызовы инструментов или застрявшие сеансы.
Принцип работы
- Каждый ИИ-агент для программирования (GitHub Copilot, Claude Code, Codex, OpenClaw, OpenCode или Gemini CLI) отправляет трассировки, метрики и журналы OpenTelemetry на настроенный OTLP-эндпоинт.
- Сборщик OpenTelemetry завершает OTLP на этой конечной точке и пересылает данные в Application Insights с помощью Azure Monitor экспортера.
- Grafana запрашивает Application Insights через источник данных Azure Monitor (Log Analytics / KQL), чтобы отобразить панели мониторинга.
Сборщик OpenTelemetry и конвейер Application Insights — это инфраструктура, настройка которой выполняется один раз. Остальная часть этого руководства проводит вас через него.
Необходимые условия
- Ресурс Application Insights. Если у вас его еще нет, создайте и подключите его к рабочей области Log Analytics.
- Установлен Docker.
- Grafana 11.6 или более поздней версии (например, Управление Azure для Grafana) с источником данных Azure Monitor, который может читать ресурс Application Insights.
Шаг 1. Запуск сборщика OpenTelemetry
Разверните OpenTelemetry Collector (дистрибутив contrib), настроенный с Azure Monitor Exporter. Сборщик соединяет OTLP от каждого агента с API ввода Application Insights.
Note
Azure Monitor также поддерживает нативный прием данных OTLP как альтернативу пути, указанного в этом руководстве. Панели мониторинга работают с обоими путями, так как данные приземляются в одни и те же таблицы Application Insights и Log Analytics. Для получения дополнительной информации см. Импортировать данные OTLP в Azure Monitor с помощью сборщика OpenTelemetry (предварительный просмотр).
Получите строку подключения для Application Insights
Сборщику требуется Application Insights строка подключения для экспорта данных телеметрии. Чтобы получить его на портале Azure, выполните следующие действия.
- Войдите на портал Azure.
- Перейдите к ресурсу Application Insights .
- В меню слева выберите "Обзор".
- Найдите поле "Строка подключения " на панели Essentials и щелкните значок копирования рядом с ним.
Значение выглядит следующим образом:
InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/;LiveEndpoint=https://<region>.livediagnostics.monitor.azure.com/;ApplicationId=00000000-0000-0000-0000-000000000000
Это важно
Относитесь к строке подключения как к секретной. Любой пользователь с доступом к нему может отправлять данные в ресурс Application Insights.
Создайте конфигурацию сборщика
Сохраните следующее как otel-collector-config.yaml, заменив заполнители <YOUR-KEY> и <region> значениями из строка подключения:
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
grpc:
endpoint: 0.0.0.0:4317
exporters:
azuremonitor:
connection_string: "InstrumentationKey=<YOUR-KEY>;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/;LiveEndpoint=https://<region>.livediagnostics.monitor.azure.com/"
service:
pipelines:
traces:
receivers: [otlp]
exporters: [azuremonitor]
metrics:
receivers: [otlp]
exporters: [azuremonitor]
logs:
receivers: [otlp]
exporters: [azuremonitor]
Запуск сборщика с помощью Docker
Запустите сборщик с образа contrib, который включает в себя экспортер Azure Monitor:
docker run -d --name otel-collector --restart unless-stopped -p 4318:4318 -p 4317:4317 -v $(pwd)/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
В примерах в следующем разделе предполагается, что сборщик запущен локально и доступен по адресу http://localhost:4318. Приемник OTLP/HTTP прослушивает порт 4318 по умолчанию, а все агенты в этом руководстве используют OTLP/HTTP. Для общего или удаленного сборщика замените собственную конечную точку.
Tip
Используйте --restart unless-stopped, чтобы сборщик автоматически запускался после перезапуска Docker Desktop или компьютера. Без него контейнер остается остановленным до тех пор, пока не начнете его вручную.
Шаг 2: Направьте каждого ИИ-агента программирования на сборщик
Каждый агент имеет собственный способ включить экспорт OpenTelemetry. Общий целевой объект — это конечная точка OTLP/HTTP сборщика.
GitHub Copilot
GitHub Copilot выдает сигналы OpenTelemetry при настройке с помощью параметров Visual Studio Code. Дополнительную информацию см. в разделе Monitoring GitHub Copilot агенты.
Добавьте следующее в Visual Studio Code settings.json:
{
"github.copilot.chat.otel.enabled": true,
"github.copilot.chat.otel.exporterType": "otlp-http",
"github.copilot.chat.otel.otlpEndpoint": "http://localhost:4318",
"github.copilot.chat.otel.captureContent": true
}
Панель мониторинга GitHub Copilot предоставляет общий объем операций, маркеры ввода и вывода, сеансы чата, вызовы инструментов и задержку для каждой модели (средняя длительность и P50/P90 TTFT) — полезна для обнаружения смещения моделей и медленных инструментов.
Код Клода
Claude Code считывает конфигурацию телеметрии из переменных среды. Дополнительные сведения см. в разделе "Мониторинг использования кода Claude".
Добавьте следующее в код Клода settings.json:
{
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_LOGS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318",
"OTEL_LOG_USER_PROMPTS": "1",
"OTEL_LOG_TOOL_DETAILS": "1",
"OTEL_METRICS_INCLUDE_VERSION": "true"
}
}
Tip
OTEL_LOG_USER_PROMPTS и OTEL_LOG_TOOL_DETAILS обогащают панели мониторинга, относящиеся к пользователю и использованию инструментов. Опустить их, если вы предпочитаете не записывать текст запроса, например в регулируемых средах, где запросы могут содержать конфиденциальное содержимое.
Панель мониторинга Claude Code распределяет ежедневные расходы и использование токенов по модели, выявляет ошибки API и ранжирует наиболее часто используемые инструменты, что полезно для управления затратами и выявления регрессий вызовов инструментов.
Кодекс
Codex отправляет сигналы OpenTelemetry, если настроен через глобальный объект Codex config.toml. В настоящее время Codex Desktop и App Server используют конфигурацию на уровне пользователя для глобальной первоначальной настройки, поэтому настройте ~/.codex/config.toml, а не .codex/config.toml на уровне проекта. В Windows путь по умолчанию — C:\Users\<user>\.codex\config.toml.
Добавьте следующее в глобальный кодекс config.toml:
[otel]
environment = "devbox"
log_user_prompt = true
exporter = "otlp-http"
trace_exporter = "otlp-http"
metrics_exporter = "otlp-http"
[otel.exporter."otlp-http"]
endpoint = "http://localhost:4318/v1/logs"
protocol = "binary"
[otel.trace_exporter."otlp-http"]
endpoint = "http://localhost:4318/v1/traces"
protocol = "binary"
[otel.metrics_exporter."otlp-http"]
endpoint = "http://localhost:4318/v1/metrics"
protocol = "binary"
Перезапустите Codex после сохранения файла, чтобы сервер приложений Codex или процесс CLI перезагрузить глобальную конфигурацию.
Tip
log_user_prompt = true выдает самые полные данные, включая необработанные запросы пользователей. Задайте для него false значение, если запросы могут содержать конфиденциальное содержимое или если ваша организация не разрешает запись запросов.
Телеметрия Codex включает данные об активности агента, такие как вызовы модели и API, вызовы инструментов, события, связанные с промптами, если они включены, использование токенов, задержки, ошибки и контекст сеанса. Эти данные полезны для поведения агента аудита, понимания использования инструментов и отслеживания затрат и надежности в сеансах Codex.
OpenClaw
Шлюз OpenClaw публикует сигналы OpenTelemetry через конфигурацию диагностики. Дополнительные сведения см. в статье OpenClaw — экспорт OpenTelemetry.
Добавьте следующую команду в конфигурацию телеметрии шлюза, вложенную в diagnostics.otel:
{
"diagnostics": {
"enabled": true,
"otel": {
"enabled": true,
"endpoint": "http://localhost:4318",
"protocol": "http/protobuf",
"serviceName": "openclaw-gateway",
"traces": true,
"metrics": true,
"logs": true,
"sampleRate": 1,
"flushIntervalMs": 5000
}
}
}
Это важно
Аргумент serviceName должен иметь значение openclaw-gateway. Панель мониторинга OpenClaw фильтрует по cloud_RoleName == "openclaw-gateway", основанному на этом поле.
Note
protocol в настоящее время учитывает только http/protobuf. gRPC игнорируется.
Панель мониторинга OpenClaw отслеживает сообщения по каналу, процентилям времени отклика, маркерам чтения кэша и застрявших сеансам. Это полезно для развертываний в стиле чата, где работоспособность сеанса и эффективность кэша позволяют повысить затраты и взаимодействие с пользователем.
OpenCode
OpenCode отправляет сигналы OpenTelemetry через плагин @devtheops/opencode-plugin-otel.
Добавьте плагин в ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["@devtheops/opencode-plugin-otel"]
}
Затем экспортируйте эти переменные среды перед запуском OpenCode:
export OPENCODE_ENABLE_TELEMETRY=1
export OPENCODE_OTLP_ENDPOINT=http://localhost:4318
export OPENCODE_OTLP_PROTOCOL=http/protobuf
export OPENCODE_RESOURCE_ATTRIBUTES="service.name=opencode"
Это важно
Аргумент service.name должен иметь значение opencode. Панель мониторинга OpenCode фильтрует данные по cloud_RoleName == "opencode", который определяется этим атрибутом.
Панель мониторинга OpenCode показывает сессии, запросы, вызовы LLM, использование токенов (входных, выходных и кэшированных), запуски инструментов и сбои, 95-й перцентиль задержки запросов, коэффициент попаданий в кэш, а также разбивку по моделям и провайдерам — что полезно для контроля затрат, отладки зависших инструментов и анализа поведения запросов и инструментов в разных сессиях.
Интерфейс командной строки Gemini
Cli Gemini считывает конфигурацию телеметрии из параметров или переменных среды.
Вариант 1. Файл параметров (глобальный или проект)
Включите данные телеметрии глобально для всех проектов или каждого проекта.
Глобальные параметры пользователя:
-
Windows:
%USERPROFILE%\.gemini\settings.json -
macOS/Linux:
~/.gemini/settings.json
параметры Project:
-
.gemini/settings.jsonв корне проекта.
Добавьте следующую конфигурацию.
{
"telemetry": {
"enabled": true,
"target": "local",
"useCollector": true,
"otlpEndpoint": "http://localhost:4318",
"otlpProtocol": "http",
"logPrompts": true
}
}
Вариант 2. Переменные среды
Переменные среды переопределяют параметры в JSON-файлах и удобны для временных настроек или настроек для конкретной машины:
# Enable telemetry and route to local collector
export GEMINI_TELEMETRY_ENABLED=true
export GEMINI_TELEMETRY_TARGET=local
export GEMINI_TELEMETRY_USE_COLLECTOR=true
export GEMINI_TELEMETRY_OTLP_ENDPOINT=http://localhost:4318
export GEMINI_TELEMETRY_OTLP_PROTOCOL=http
export GEMINI_TELEMETRY_LOG_PROMPTS=true
Tip
logPrompts: true (или GEMINI_TELEMETRY_LOG_PROMPTS=true) записывает текст запроса пользователя в событиях телеметрии, который полезен для аудита и отладки. Задайте для него значение false , если запросы могут содержать конфиденциальное содержимое.
Шаг 3: Убедитесь, что данные поступают в Application Insights
После того как агенты и система сбора данных запущены, убедитесь, что телеметрия поступает, перед тем как импортировать панели мониторинга.
На портале Azure перейдите к ресурсу Application Insights и выберите Logs.
Выполните проверку KQL для каждого источника:
// GitHub Copilot dependencies | where timestamp > ago(1h) | where cloud_RoleName == "copilot-chat" | take 50// Claude Code customMetrics | where timestamp > ago(1h) | where name startswith "claude_code" | take 50// Codex union isfuzzy=true traces, customEvents, dependencies, customMetrics | where timestamp > ago(1h) | where cloud_RoleName contains "codex" or tostring(customDimensions["service.name"]) contains "codex" or name contains "codex" or message contains "codex" | take 50// OpenClaw dependencies | where timestamp > ago(1h) | where cloud_RoleName == "openclaw-gateway" | take 50// OpenCode union isfuzzy=true traces, dependencies, exceptions | where timestamp > ago(1h) | where cloud_RoleName == "opencode" | take 50// Gemini CLI traces | where timestamp > ago(1h) | where customDimensions["service.name"] == "gemini-cli" | take 50
Если строки возвращаются, конвейер работает. Если нет, проверьте списки сборщика на наличие ошибок экспорта. Типичные причины — это неправильная строка подключения, блокировка исходящего трафика на конечную точку приема Application Insights или заблокированный брандмауэром порт приемника OTLP.
Шаг 4. Импорт панелей мониторинга в Grafana или доступ к ним на портале Azure
Каждая панель мониторинга имеет собственный поток импорта и ссылку на переменные:
Для всех панелей мониторинга требуется Grafana 11.6 или более поздней версии с источником данных Azure Monitor с доступом к подписке, содержащей ресурс Application Insights.
Tip
Эти панели мониторинга также доступны на портале Azure в качестве Azure Monitor панелей с интеграцией Grafana, без необходимости отдельной инстанции Grafana. Дополнительные сведения см. в разделе Использование панелей мониторинга Azure Monitor с помощью Grafana.
Откуда идти отсюда
- Добавление дополнительных агентов. Тот же сборщик обслуживает любой инструмент, который выдает OTLP. По мере того как ваша команда принимает новые агенты программирования, наведите их на одну конечную точку и вносите свой вклад в создание панели мониторинга.
- Настройка оповещений. Используйте правила генерации оповещений Application Insights или оповещение Grafana по тем же данным, например, по ежедневным затратам, превышающим пороговое значение, устойчивую частоту ошибок API или число застрявших сеансов.
- Поделитесь с заинтересованными лицами. Закрепление панелей управления в списке воспроизведения Grafana или внедрение выбранных панелей на страницах состояния вашей команды, чтобы внедрение, стоимость и надежность оставались видимыми для руководства.
Связанный контент
- Сборщик OpenTelemetry
- Экспортер Azure Monitor для коллектора OpenTelemetry
- Передача данных OTLP в Azure Monitor с помощью коллектора OpenTelemetry (предварительная версия)
- Использование панелей мониторинга Azure Monitor с Grafana
- Строки подключения Application Insights
- Мониторинг агентов GitHub Copilot
- Мониторинг использования кода Claude
- Справочник по конфигурации Codex
- Пример конфигурации Codex
- OpenClaw — экспорт OpenTelemetry
-
Плагин OpenCode OpenTelemetry (
@devtheops/opencode-plugin-otel) - Cli Gemini — наблюдаемость с помощью OpenTelemetry