OpenTelemetry i analityka dla Claude Code, Codex i Cursor
Telemetria agentów kodujących ma trzy warstwy: eksport OpenTelemetry do kolektora, który utrzymujesz sam, dashboardy analityczne dostawców do adopcji i atrybucji pull requestów oraz pochodzenie każdego commita z Entire CLI. Dashboard claude.ai nie pokazuje kosztu na użytkownika; daje go OpenTelemetry, raport wydatków albo, w planie Enterprise, Analytics API. Dla Cursora 26.09.2026 nie potwierdzono eksportu OpenTelemetry.
Ta strona jest dla programisty, który chce widzieć, co robią i ile kosztują jego sesje z agentem, oraz dla tech leada, który na najbliższym planowaniu musi odpowiedzieć na pytanie „czy wdrożenie agentów działa?”. Masz 12 licencji, fakturę i dashboard, według którego w zeszłym tygodniu aktywnych było 70% osób. Nikt nie potrafi powiedzieć, na które modele poszły pieniądze, które zmergowane pull requesty napisali agenci ani czy te zmiany przetrwały.
Kanoniczną stroną o produkcyjnych potokach telemetrii, retencji audytu i kluczach łączenia jest obserwowalność agentów. Przegląd narzędzi do obserwowalności i jakości pokazuje, gdzie ta strona stoi obok narzędzi do kosztów, review, bezpieczeństwa i ewaluacji. Ta strona to półka z narzędziami: co eksportuje każdy produkt, lokalny stos uruchamiany jednym poleceniem i comiesięczny przegląd adopcji zbudowany na tych danych.
Co daje ci ta konfiguracja telemetrii
Dział zatytułowany „Co daje ci ta konfiguracja telemetrii”- Działający lokalny stos: Claude Code i Codex eksportują OpenTelemetry do Grafany na twoim laptopie, a jedno zapytanie potwierdza, że dane docierają.
- PromQL dla sześciu paneli Claude Code, o które pyta tech lead: koszt według modelu, tokeny według typu, aktywni użytkownicy, sesje, odsetek zaakceptowanych edycji oraz commity i pull requesty.
- Jasną mapę tego, co pokazuje dashboard analityczny Claude Code, czego nie pokazuje (kosztu na użytkownika) i kiedy przestaje działać (Zero Data Retention).
- Entire CLI skonfigurowane dla każdego narzędzia, dzięki czemu z każdego commita dojdziesz do promptów i sesji, które go wytworzyły.
- Comiesięczny przegląd adopcji w czterech krokach i trzy prompty do skopiowania, które go automatyzują.
Jaką telemetrię daje każde narzędzie?
Dział zatytułowany „Jaką telemetrię daje każde narzędzie?”Zacznij od tego, która warstwa odpowiada na które pytanie. Telemetria odpowiada na pytanie „co robiły sesje i ile kosztowały?”, analityka na „kto używa agenta i ile zmergowanego kodu z niego pochodzi?”, a pochodzenie commitów na „dlaczego ten commit wygląda właśnie tak?”.
| Warstwa | Claude Code 2.1.283 | Codex CLI 0.157.1 | Cursor |
|---|---|---|---|
| Eksport OpenTelemetry | Metryki i zdarzenia logów; ślady w becie (CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1) | Logi, ślady i metryki z [otel] w config.toml | Nie potwierdzono 26.09.2026 |
| Sygnał kosztu | claude_code.cost.usage (USD) z atrybutami model, effort, query_source | codex.turn.cost_microusd | Nie potwierdzono |
| Sygnał dostarczania | claude_code.commit.count, claude_code.pull_request.count, claude_code.lines_of_code.count | Brak metryki commitów i pull requestów w codex-rs/otel w tagu rust-v0.157.1 | Nie potwierdzono |
| Dashboard dostawcy | claude.ai/analytics/claude-code (Team, Enterprise); platform.claude.com/claude-code (Console) | Dashboard analityczny Enterprise i Analytics API (źródło wtórne: strony pomocy OpenAI widziane tylko we fragmentach wyników wyszukiwania) | Dashboard analityczny Team/Enterprise i Analytics API; AI Code Tracking API (tylko Enterprise) przypisuje linie wygenerowane przez AI do commitów (źródło wtórne: dokumentacja cursor.com widziana tylko we fragmentach wyników wyszukiwania; endpointów nie potwierdzono) |
| Widok sesji na twojej maszynie | /usage (/cost i /stats to aliasy); /insights zapisuje raport HTML z ostatnich sesji | Zdarzenia codex exec --json dla każdego przebiegu | Nie potwierdzono |
| Pochodzenie commitów | Entire CLI (entire enable --agent claude-code) | Entire CLI (--agent codex) | Entire CLI (--agent cursor) |
Źródła: dokumentacja Claude Code o monitorowaniu i analityce; kod źródłowy Codeksa (codex-rs/config/src/types.rs i codex-rs/otel/src/metrics/names.rs w tagu rust-v0.157.1); README entireio/cli; wszystko czytane 26.09.2026.
Wspólny słownik OpenTelemetry dla agentów (invoke_agent, execute_tool) znajduje się w repozytorium open-telemetry/semantic-conventions-genai i 26.09.2026 wciąż był oznaczony jako Status: Development, więc każde narzędzie używa własnych nazw. Buduj dziś dashboardy osobno dla każdego narzędzia i licz się ze zmianą nazw.
Co pokazuje dashboard analityczny Claude Code, a czego nie?
Dział zatytułowany „Co pokazuje dashboard analityczny Claude Code, a czego nie?”Dashboard dla planów Team i Enterprise pod adresem claude.ai/analytics/claude-code to najszybszy widok adopcji. Ma cztery ograniczenia, które zmieniają sposób korzystania z niego:
- Brak kosztu na użytkownika. Pokazuje zaakceptowane linie, odsetek przyjętych sugestii, dzienną liczbę aktywnych użytkowników, sesje, metryki wkładu oraz ranking 10 osób z eksportem CSV wszystkich użytkowników. Tokeny i koszt na użytkownika dają OpenTelemetry albo raport wydatków w ustawieniach analityki organizacji.
- Metryki wkładu wymagają GitHuba i są w publicznej becie. Właściciel organizacji (rola Owner) włącza analitykę i przełącznik GitHub analytics na
claude.ai/admin-settings/claude-code, a administrator GitHuba instaluje aplikację zgithub.com/apps/claude. Dane zwykle pojawiają się w ciągu 24 godzin. Liczą się tylko użytkownicy twojej organizacji claude.ai; użycie przez API w Console się nie liczy. - Zero Data Retention wyłącza metryki wkładu. Organizacja z ZDR widzi tylko metryki użycia, więc atrybucja pull requestów musi pochodzić z twoich etykiet albo trailerów Entire.
- Atrybucja jest celowo ostrożna. Zmergowany pull request się liczy, gdy sesje Claude Code z okresu od 21 dni przed do 2 dni po merge’u pasują do dodanych linii. Kod przepisany w ponad 20% nie jest przypisywany, a pliki lock, wyniki buildów i snapshoty są pomijane. Przypisane pull requesty dostają na GitHubie etykietę
claude-code-assisted.
Ta etykieta to najtańsze zapytanie o atrybucję, jakie masz. W wyszukiwarce GitHuba is:pr is:merged label:claude-code-assisted pokazuje każdy zmergowany pull request przypisany przez silnik, bez dostępu do API. W planie Enterprise Claude Enterprise Analytics API zwraca raporty zaangażowania, użycia i kosztów na użytkownika dla klucza z zakresem read:analytics; plan Team nie ma tego API. Klienci Console używają Claude Code Analytics API z kluczem Admin API, a sama Console zaznacza, że pokazywane wydatki są szacunkami, a nie danymi rozliczeniowymi.
Wyślij telemetrię Claude Code i Codeksa do lokalnego stosu Grafany
Dział zatytułowany „Wyślij telemetrię Claude Code i Codeksa do lokalnego stosu Grafany”To pełny przykład: jeden kontener, dwa agenty i jedno zapytanie, które dowodzi, że dane docierają. Działa na laptopie i kosztuje tylko miejsce na dysku. Obraz grafana/otel-lgtm zawiera OpenTelemetry Collector, Prometheusa, Loki, Tempo, Pyroscope i Grafanę; Grafana opisuje go jako przeznaczony do developmentu, demonstracji i testów, a nie do produkcji.
-
Uruchom stos. W terminalu:
Okno terminala docker run --rm --name lgtm \-p 3000:3000 -p 4317:4317 -p 4318:4318 -p 9090:9090 \grafana/otel-lgtmPort 3000 to Grafana (logowanie
admin/admin), 4317 to OTLP przez gRPC, 4318 to OTLP przez HTTP, a 9090 to Prometheus, który prompty poniżej odpytują bezpośrednio. -
Skieruj każdego agenta na kolektor. Ustawienia różnią się między narzędziami.
Wyeksportuj zmienne w powłoce, z której uruchamiasz
claude, albo wpisz te same klucze podenvw~/.claude/settings.json. Claude Code ignoruje zmienne eksporterów w.claude/settings.jsoni.claude/settings.local.jsonrepozytorium, więc repozytorium nie może włączyć telemetrii ani jej przekierować.Okno terminala export CLAUDE_CODE_ENABLE_TELEMETRY=1export OTEL_METRICS_EXPORTER=otlpexport OTEL_LOGS_EXPORTER=otlpexport OTEL_EXPORTER_OTLP_PROTOCOL=grpcexport OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317export OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=cumulativeexport OTEL_METRIC_EXPORT_INTERVAL=10000export OTEL_METRICS_INCLUDE_REPOSITORY=trueclaudeClaude Code nie ma domyślnego protokołu OTLP, więc
OTEL_EXPORTER_OTLP_PROTOCOLjest wymagane. Domyślna temporalność todelta; dokumentacja każe przełączyć ją nacumulative, gdy wymaga tego backend, a stos oparty na Prometheusie przechowuje liczniki skumulowane. Interwał 10 sekund służy do testów; domyślnie jest to 60 sekund.OTEL_METRICS_INCLUDE_REPOSITORY=true(od v2.1.269) dodajevcs.repository.namei pokrewne atrybuty, więc możesz filtrować po repozytorium.Treść promptów, dane wejściowe narzędzi i odpowiedzi pozostają zredagowane, dopóki nie ustawisz
OTEL_LOG_USER_PROMPTS,OTEL_LOG_TOOL_DETAILSalboOTEL_LOG_ASSISTANT_RESPONSES. Tutaj zostaw je wyłączone.Dodaj tabelę
[otel]do~/.codex/config.toml. Nazwy pól pochodzą zOtelConfigTomlw kodzie źródłowym Codeksa, a ten blok ładuje się bez błędu w codex-cli 0.157.1. Literówka w nazwie klucza jest w 0.157.1 po cichu ignorowana i zostawia ten eksporter na wartości domyślnej; literówka w nazwie eksportera, na przykładotlp-grcp, kończy start błędemError loading config.toml: unknown variant:[otel]environment = "dev"log_user_prompt = falseexporter = { otlp-grpc = { endpoint = "http://localhost:4317" } }trace_exporter = { otlp-grpc = { endpoint = "http://localhost:4317" } }metrics_exporter = { otlp-grpc = { endpoint = "http://localhost:4317" } }Ustaw wszystkie trzy eksportery. W 0.157.1 eksportery logów i śladów mają domyślnie wartość
none, ametrics_exporterdomyślniestatsig, czyli wewnętrzny cel Codeksa. Dla kolektora HTTP użyjotlp-http = { endpoint = "...", protocol = "binary" }z pełną ścieżką sygnału (na przykładhttp://localhost:4318/v1/logs). Nagłówki dla kolektora z uwierzytelnianiem trafiają do tabeliheaders = { ... }jawnym tekstem, więc zapisuj ten plik z menedżera sekretów i nigdy go nie commituj.Szukaj między innymi metryk
codex.thread.started,codex.turn.token_usage,codex.turn.cost_microusd,codex.tool.callicodex.api_request.26.09.2026 nie udało się potwierdzić eksportu OpenTelemetry z Cursora, więc Cursor nic do tego stosu nie wysyła. Dwie potwierdzone drogi dają część obrazu:
- Entire CLI zapisuje sesje Cursora przy każdym commicie przez
.cursor/hooks.json(zobacz niżej powiązanie commita z sesją). - Hooki Cursora dostają zdarzenia agenta jako JSON przez stdio (potwierdzone 28.08.2026), więc hook może dopisywać zdarzenia do pliku, który czyta twój kolektor. Nazw zdarzeń nie potwierdzono; sprawdź dokumentację hooków Cursora, zanim zbudujesz na nich panele.
Do użycia i wydatków zespołu Cursor ma dashboard analityczny Team/Enterprise i Analytics API, a także AI Code Tracking API (tylko Enterprise), które przypisuje linie wygenerowane przez AI do commitów (źródło wtórne: dokumentacja cursor.com widziana tylko we fragmentach wyników wyszukiwania; endpointów nie potwierdzono). Sprawdź, co twój plan faktycznie eksportuje, zanim komukolwiek obiecasz liczbę.
- Entire CLI zapisuje sesje Cursora przy każdym commicie przez
-
Sprawdź, czy dane docierają. Uruchom po jednej krótkiej sesji w każdym agencie, otwórz Grafanę pod
http://localhost:3000, przejdź do Explore, wybierz źródło danych Prometheus i uruchom:{__name__=~"claude_code_session_count.*|codex_thread_started.*"}Dla Claude Code w ciągu około 10 sekund zobaczysz po jednej serii na start sesji. Kropki w nazwach OpenTelemetry zmieniają się w Prometheusie w podkreślenia, a Prometheus może dopisać jednostkę lub sufiks
_total, dlatego każde zapytanie tutaj dopasowuje nazwę po prefiksie. Zdarzenia znajdziesz, wybierając źródło Loki i szukającuser_prompt. Jeśli nic nie dociera, uruchomclaude --debug-file /tmp/claude-otel.logi poszukaj w tym pliku[3P telemetry]; linie oznaczone[Anthropic telemetry]to operacyjna telemetria samego Anthropic i nie wskazują problemu. -
Zbuduj sześć paneli Claude Code. Utwórz dashboard z jednym panelem na zapytanie, każdy dla zakresu 7 dni:
# Cost by model (USD, client-side estimate)sum by (model) (increase({__name__=~"claude_code_cost_usage.*"}[7d]))# Tokens by type: input, output, cacheRead, cacheCreationsum by (type) (increase({__name__=~"claude_code_token_usage.*"}[7d]))# Active users (count only; never chart per person)count(count by (user_email) (increase({__name__=~"claude_code_session_count.*"}[7d]) > 0))# Sessions by start type: fresh, resume, continue, agents_viewsum by (start_type) (increase({__name__=~"claude_code_session_count.*"}[7d]))# Edit accept rate: Edit, Write, NotebookEdit decisionssum(increase({__name__=~"claude_code_code_edit_tool_decision.*", decision="accept"}[7d]))/ sum(increase({__name__=~"claude_code_code_edit_tool_decision.*"}[7d]))# Commits and pull requests the agent createdsum(increase({__name__=~"claude_code_commit_count.*|claude_code_pull_request_count.*"}[7d]))Panel odsetka akceptacji liczy każdą decyzję, także edycje zaakceptowane bez udziału człowieka przez ustawienia, tryb uprawnień albo hook (
source="config"lubsource="hook"), więc w liberalnych trybach zbliża się do 100%. Żeby zmierzyć akceptację przez ludzi, dodaj filtrsource=~"user_.*"w liczniku i mianowniku.Przy seriach per sesja
increase()pomija pierwszą próbkę każdej serii, więc krótkie sesje są niedoliczane. Do sum, które uzgadniasz z fakturą, użyjsum by (model) (max_over_time({__name__=~"claude_code_cost_usage.*"}[7d]))albo ustawOTEL_METRICS_INCLUDE_SESSION_ID=falsedla metryk dashboardu.Jeśli brakuje etykiety takiej jak
user_email, otwórz metrykę w Explore i użyj nazwy etykiety, którą pokazuje twój stos. Panele Codeksa dodasz tak samo, gdy pojawią się seriecodex_. -
Przejdź z laptopa na zespół. Gdy panele odpowiadają na prawdziwe pytania, zastąp kontener produkcyjnym kolektorem i rozprowadź zmienne Claude Code przez ustawienia zarządzane, które nadpisują zmienne eksporterów ustawione przez programistów. Dla rotowanego tokenu kolektora wskaż w ustawieniach
otelHeadersHelperskrypt, który wypisuje nagłówki jako JSON; Claude Code domyślnie uruchamia go ponownie co 29 minut. Produkcyjny potok (strumień analityczny z pseudonimizacją, strumień audytowy z tożsamościami, retencja) opisuje strona obserwowalność agentów.
Dwa otwarte stosy referencyjne oszczędzą ci pracy nad dashboardem, jeśli potrzebujesz więcej niż sześciu paneli. Stan na 26.09.2026 (gwiazdki GitHuba odczytane przez GitHub API na potrzeby katalogu badawczego serwisu): ColeMurray/claude-code-otel (506 gwiazdek) to stos Docker Compose z kolektorem, Prometheusem, Loki i Grafaną oraz gotowymi dashboardami kosztów, narzędzi, użytkowników i sesji (make up); anthropics/claude-code-monitoring-guide (370 gwiazdek) to przewodnik Anthropic o ROI z plikami docker-compose.yml, otel-collector-config.yaml, dashboardami Grafany i promptem do generowania raportów. Żaden nie obejmuje Codeksa.
Powiąż commit z sesją agenta za pomocą Entire CLI
Dział zatytułowany „Powiąż commit z sesją agenta za pomocą Entire CLI”Metryki powiedzą ci, że w zeszłym tygodniu 40 commitów powstało w sesjach agentów. Nie powiedzą, dlaczego konkretna linia w billing/retry.ts wygląda tak, jak wygląda. Tę lukę wypełnia Entire CLI (Entire Inc., licencja MIT, entireio/cli): instaluje hooki gita i hooki dla każdego agenta, podczas pracy agenta zapisuje prompty, transkrypt, wywołania narzędzi, zmienione pliki i zużycie tokenów, a przy commicie łączy je w checkpoint powiązany trailerem Entire-Checkpoint: <id>. Entire nigdy nie tworzy commitów na twojej gałęzi.
Popularność na 26.09.2026: 5,1 tys. gwiazdek na GitHubie; najnowsza stabilna wersja v0.11.3, wydana 25.09.2026 (GitHub API i strona wydań). To binarka w Go; pakiet npm entire to niezwiązany projekt.
brew install --cask entireio/tap/entirecd your-projectentire enable --agent claude-code # hooks land in .claude/settings.jsonentire statusbrew install --cask entireio/tap/entirecd your-projectentire enable --agent codex # hooks land in .codex/hooks.jsonentire statusbrew install --cask entireio/tap/entirecd your-projectentire enable --agent cursor # hooks land in .cursor/hooks.jsonentire statusKolejnego agenta dodasz później poleceniem entire agent add codex. Ustawienia zespołu trafiają do .entire/settings.json, a osobiste nadpisania do ignorowanego przez gita .entire/settings.local.json. README podaje też inne sposoby instalacji: skrypt instalacyjny, Scoop w Windows i go install.
Przegląd pull requesta napisanego przez agenta wygląda wtedy tak:
git log -1 --format=%B # message ends with: Entire-Checkpoint: <id>entire checkpoint explain <CHECKPOINT_ID> # prompts, transcript, files touched, tokensentire search "rate limiter retry" # search across checkpoints, commits and sessionsCHECKPOINT_ID to wartość po Entire-Checkpoint: w wiadomości commita. Checkpointy są zapisywane jako refy gita pod refs/entire/checkpoints/ i wypychane zwykłym git push; starsza pojedyncza gałąź entire/checkpoints/v1 to starszy backend (legacy).
Przeprowadź comiesięczny przegląd adopcji: użycie, atrybucja, wyniki
Dział zatytułowany „Przeprowadź comiesięczny przegląd adopcji: użycie, atrybucja, wyniki”Telemetria opłaca się tylko wtedy, gdy prowadzi do decyzji. Opisany niżej przegląd odbywa się co miesiąc, a jego właścicielem jest tech lead. Stosuje podział na wykorzystanie, wpływ i koszt, którego używa AI Measurement Framework firmy DX (źródło wtórne: strona badań DX widziana we fragmencie wyników wyszukiwania), z definicjami metryk ze strony serwisu o frameworkach metryk.
-
Użycie: kto używa którego agenta, na jakich modelach i za ile. Pobierz aktywnych użytkowników, sesje i koszt według modelu z paneli Grafany (Claude Code i Codex) oraz z dashboardów dostawców (wszystkie trzy narzędzia). Porównaj liczbę aktywnych użytkowników z liczbą opłaconych licencji. Raportuj koszt według modelu i repozytorium, nigdy według osoby.
-
Atrybucja: które zmergowane zmiany powstały z udziałem agenta. Połącz trzy źródła, od najmocniejszego: własną etykietę pull requesta
agent-assistedalbo pole wyboru w szablonie, etykietęclaude-code-assistedz dashboardu Claude Code i traileryEntire-Checkpointw zmergowanych commitach. Pull request z którymkolwiek z nich liczy się jako wspomagany przez agenta. Sama etykieta dostawcy zaniża wynik, bo pomija Codeksa i Cursora i jest celowo ostrożna. -
Wyniki: czy te zmiany przetrwały. Dla kohorty wspomaganej przez agenta i dla pozostałych zmian policz odsetek przyjętych zmian, odsetek poprawek w ciągu 14 dni i czas review, zgodnie z definicjami ze strony o metrykach. Podziel miesięczne wydatki na agentów (licencje plus użycie) przez liczbę przyjętych zmian wspomaganych przez agenta, aby dostać koszt przyjętej zmiany.
-
Zdecyduj i zapisz. Wybierz najwyżej dwie zmiany na kolejny miesiąc (zmianę modelu, poprawkę pliku kontekstowego, szkolenie dla repozytorium z niską adopcją) i zapisz, która liczba powinna się poruszyć. Tech lead zatwierdza przegląd; kolejny przegląd sprawdza, czy liczba się poruszyła.
Skąd wiesz, że liczby z telemetrii są prawdziwe?
Dział zatytułowany „Skąd wiesz, że liczby z telemetrii są prawdziwe?”Dashboard, którego nikt nie sprawdził, to opinia. Zweryfikuj go raz przy konfiguracji, a potem co miesiąc, bez czytania żadnego diffu agenta:
- Uzgodnij koszt z fakturą.
claude_code.cost.usageicodex.turn.cost_microusdsą liczone po stronie klienta, a Console sama zaznacza, że jej dane o wydatkach są szacunkami. Porównaj miesięczną sumę z telemetrii z fakturą; raportujesz liczbę z faktury, a telemetria służy do jej rozbicia. - Przetestuj każdy obraz maszyny. Jedna sesja na każdy obraz laptopa i obraz CI, a po niej zapytanie z kroku 3. Obraz CI bez zmiennych to cicha dziura w każdej sumie.
- Sprawdź wyrywkowo atrybucję. Weź pięć zmergowanych pull requestów i potwierdź każdą etykietę albo trailer Entire z sesją, która je wytworzyła. Zapisz odsetek błędów na stronie przeglądu.
- Alarmuj o ciszy. Alert Grafany „brak danych
claude_code_session_countprzez 24 godziny w dniu roboczym” wyłapie zepsuty eksporter wcześniej niż comiesięczny przegląd. - Trzymaj tożsamości z dala od analityki. Przegląd liczy użytkowników, ale nigdy ich nie szereguje. Strona o ścieżkach kariery wyjaśnia, dlaczego liczby tokenów czy pull requestów na osobę stają się celami, pod które ludzie zaczynają optymalizować pracę (prawo Goodharta).
Co się psuje przy zbieraniu telemetrii agentów i jak to naprawić?
Dział zatytułowany „Co się psuje przy zbieraniu telemetrii agentów i jak to naprawić?”Claude Code działa, ale metryki nie docierają. Zwykle brakuje OTEL_EXPORTER_OTLP_PROTOCOL albo zmienne trafiły do ustawień projektu. Naprawa: ustaw protokół, przenieś zmienne do powłoki, ustawień użytkownika lub ustawień zarządzanych i sprawdź w pliku debugowania błędy [3P telemetry].
Metryki docierają, ale panele są puste albo skaczą. Temporalność delta trafia do backendu, który oczekuje wartości skumulowanych. Naprawa: ustaw OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=cumulative i uruchom sesję ponownie.
Brakuje telemetrii Codeksa. Albo nazwa klucza ma literówkę (Codex po cichu ją ignoruje), albo [otel] leży w innym CODEX_HOME niż ten, z którego czyta sesja. Naprawa: potwierdź CODEX_HOME, a potem porównaj swoje klucze z exporter, trace_exporter i metrics_exporter. Zgłoszony problem (openai/codex#12913, status niepotwierdzony dla 0.157.1) mówi, że codex exec nie emituje metryk OpenTelemetry, więc sprawdź przebiegi headless osobno, zanim zbudujesz na nich panele.
Magazyn Prometheusa szybko rośnie. session.id jest domyślnie na każdej metryce Claude Code, więc każda sesja to nowa seria. Naprawa: w dużym zespole ustaw OTEL_METRICS_INCLUDE_SESSION_ID=false i trzymaj identyfikatory sesji w zdarzeniach logów, gdzie kardynalność jest tania.
Przegląd adopcji pokazuje, że wygrywa Claude Code, a Codeksa nie widać. Etykieta dostawcy przypisuje tylko Claude Code, a Codex 0.157.1 nie emituje metryki commitów. Naprawa: przypisuj przez własną etykietę agent-assisted i trailery Entire, które obejmują wszystkie trzy narzędzia.
Sekret pojawia się w magazynie logów. Ktoś włączył OTEL_LOG_TOOL_DETAILS albo OTEL_LOG_USER_PROMPTS. Naprawa: zrotuj sekret, usuń rekordy i kieruj treść wyłącznie do potoku audytowego opisanego na stronie obserwowalność agentów.
Atrybucja pull requestów znika po zmianie umowy. Zero Data Retention wyłącza metryki wkładu. Naprawa: trzymaj własną etykietę i trailery Entire jako podstawową atrybucję, aby przegląd nie zależał od jednej funkcji dostawcy.
Dokąd dalej z telemetrią agentów
Dział zatytułowany „Dokąd dalej z telemetrią agentów”Najczęstsze pytania
Czy dashboard analityczny Claude Code pokazuje koszt na użytkownika?
Nie. Dashboard dla planów Team i Enterprise pokazuje użycie, metryki wkładu i ranking. Tokeny i koszt na użytkownika daje eksport OpenTelemetry do własnego kolektora, raport wydatków z ustawień analityki organizacji albo, w planie Enterprise, Analytics API.
Jak włączyć OpenTelemetry w Claude Code?
Ustaw CLAUDE_CODE_ENABLE_TELEMETRY=1 oraz OTEL_METRICS_EXPORTER i OTEL_LOGS_EXPORTER, a także OTEL_EXPORTER_OTLP_PROTOCOL, bo Claude Code nie ma domyślnego protokołu. Zmienne w .claude/settings.json repozytorium są ignorowane; użyj powłoki, ustawień użytkownika albo ustawień zarządzanych.
Jak wyeksportować telemetrię Codeksa?
Dodaj tabelę [otel] do ~/.codex/config.toml i ustaw exporter, trace_exporter oraz metrics_exporter na otlp-grpc albo otlp-http. Ustaw metrics_exporter jawnie, bo w Codex CLI 0.157.1 jego wartością domyślną jest statsig.
Czy atrybucja pull requestów działa przy Zero Data Retention?
Nie. Organizacje z Zero Data Retention widzą w dashboardzie Claude Code tylko metryki użycia; metryki wkładu, w tym atrybucja pull requestów, są niedostępne. Zamiast nich użyj własnych etykiet pull requestów albo trailerów commitów z Entire CLI.