Überwachung
Erfahren Sie, wie Sie OpenTelemetry für Claude Code aktivieren und konfigurieren.
Claude Code unterstützt OpenTelemetry (OTel) Metriken und Ereignisse für Überwachung und Observability.
Alle Metriken sind Zeitreihendaten, die über OpenTelemetrys Standard-Metriken-Protokoll exportiert werden, und Ereignisse werden über OpenTelemetrys Logs/Events-Protokoll exportiert. Es liegt in der Verantwortung des Benutzers sicherzustellen, dass ihre Metriken- und Logs-Backends ordnungsgemäß konfiguriert sind und dass die Aggregationsgranularität ihren Überwachungsanforderungen entspricht.
OpenTelemetry-Unterstützung befindet sich derzeit in der Beta-Phase und Details können sich ändern.
Schnellstart
Konfigurieren Sie OpenTelemetry mit Umgebungsvariablen:
Die Standard-Export-Intervalle sind 60 Sekunden für Metriken und 5 Sekunden für Logs. Während der Einrichtung möchten Sie möglicherweise kürzere Intervalle für Debugging-Zwecke verwenden. Denken Sie daran, diese für den Produktionseinsatz zurückzusetzen.
Für vollständige Konfigurationsoptionen siehe die OpenTelemetry-Spezifikation.
Administrator-Konfiguration
Administratoren können OpenTelemetry-Einstellungen für alle Benutzer über die verwaltete Einstellungsdatei konfigurieren. Dies ermöglicht eine zentrale Kontrolle der Telemetrie-Einstellungen in einer Organisation. Siehe die Einstellungspriorität für weitere Informationen darüber, wie Einstellungen angewendet werden.
Die verwaltete Einstellungsdatei befindet sich unter:
- macOS:
/Library/Application Support/ClaudeCode/managed-settings.json
- Linux:
/etc/claude-code/managed-settings.json
Beispiel für eine verwaltete Einstellungskonfiguration:
Verwaltete Einstellungen können über MDM (Mobile Device Management) oder andere Geräteverwaltungslösungen verteilt werden. Umgebungsvariablen, die in der verwalteten Einstellungsdatei definiert sind, haben hohe Priorität und können nicht von Benutzern überschrieben werden.
Konfigurationsdetails
Häufige Konfigurationsvariablen
Umgebungsvariable | Beschreibung | Beispielwerte |
---|---|---|
CLAUDE_CODE_ENABLE_TELEMETRY | Aktiviert Telemetrie-Sammlung (erforderlich) | 1 |
OTEL_METRICS_EXPORTER | Metriken-Exporter-Typ(en) (kommagetrennt) | console , otlp , prometheus |
OTEL_LOGS_EXPORTER | Logs/Events-Exporter-Typ(en) (kommagetrennt) | console , otlp |
OTEL_EXPORTER_OTLP_PROTOCOL | Protokoll für OTLP-Exporter (alle Signale) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_ENDPOINT | OTLP-Collector-Endpunkt (alle Signale) | http://localhost:4317 |
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | Protokoll für Metriken (überschreibt allgemein) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | OTLP-Metriken-Endpunkt (überschreibt allgemein) | http://localhost:4318/v1/metrics |
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL | Protokoll für Logs (überschreibt allgemein) | grpc , http/json , http/protobuf |
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | OTLP-Logs-Endpunkt (überschreibt allgemein) | http://localhost:4318/v1/logs |
OTEL_EXPORTER_OTLP_HEADERS | Authentifizierungs-Header für OTLP | Authorization=Bearer token |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY | Client-Schlüssel für mTLS-Authentifizierung | Pfad zur Client-Schlüsseldatei |
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE | Client-Zertifikat für mTLS-Authentifizierung | Pfad zur Client-Zertifikatsdatei |
OTEL_METRIC_EXPORT_INTERVAL | Export-Intervall in Millisekunden (Standard: 60000) | 5000 , 60000 |
OTEL_LOGS_EXPORT_INTERVAL | Logs-Export-Intervall in Millisekunden (Standard: 5000) | 1000 , 10000 |
OTEL_LOG_USER_PROMPTS | Aktiviert Protokollierung von Benutzer-Prompt-Inhalten (Standard: deaktiviert) | 1 zum Aktivieren |
Metriken-Kardinalitätskontrolle
Die folgenden Umgebungsvariablen steuern, welche Attribute in Metriken enthalten sind, um die Kardinalität zu verwalten:
Umgebungsvariable | Beschreibung | Standardwert | Beispiel zum Deaktivieren |
---|---|---|---|
OTEL_METRICS_INCLUDE_SESSION_ID | session.id-Attribut in Metriken einschließen | true | false |
OTEL_METRICS_INCLUDE_VERSION | app.version-Attribut in Metriken einschließen | false | true |
OTEL_METRICS_INCLUDE_ACCOUNT_UUID | user.account_uuid-Attribut in Metriken einschließen | true | false |
Diese Variablen helfen dabei, die Kardinalität von Metriken zu kontrollieren, was die Speicheranforderungen und Abfrageleistung in Ihrem Metriken-Backend beeinflusst. Niedrigere Kardinalität bedeutet im Allgemeinen bessere Leistung und geringere Speicherkosten, aber weniger granulare Daten für die Analyse.
Multi-Team-Organisationsunterstützung
Organisationen mit mehreren Teams oder Abteilungen können benutzerdefinierte Attribute hinzufügen, um zwischen verschiedenen Gruppen zu unterscheiden, indem sie die Umgebungsvariable OTEL_RESOURCE_ATTRIBUTES
verwenden:
Diese benutzerdefinierten Attribute werden in alle Metriken und Ereignisse einbezogen, wodurch Sie folgendes können:
- Metriken nach Team oder Abteilung filtern
- Kosten pro Kostenstelle verfolgen
- Teamspezifische Dashboards erstellen
- Warnungen für bestimmte Teams einrichten
Beispielkonfigurationen
Verfügbare Metriken und Ereignisse
Standard-Attribute
Alle Metriken und Ereignisse teilen diese Standard-Attribute:
Attribut | Beschreibung | Kontrolliert durch |
---|---|---|
session.id | Eindeutige Sitzungskennung | OTEL_METRICS_INCLUDE_SESSION_ID (Standard: true) |
app.version | Aktuelle Claude Code-Version | OTEL_METRICS_INCLUDE_VERSION (Standard: false) |
organization.id | Organisations-UUID (bei Authentifizierung) | Immer enthalten wenn verfügbar |
user.account_uuid | Konto-UUID (bei Authentifizierung) | OTEL_METRICS_INCLUDE_ACCOUNT_UUID (Standard: true) |
terminal.type | Terminal-Typ (z.B. iTerm.app , vscode , cursor , tmux ) | Immer enthalten wenn erkannt |
Metriken
Claude Code exportiert die folgenden Metriken:
Metrikname | Beschreibung | Einheit |
---|---|---|
claude_code.session.count | Anzahl der gestarteten CLI-Sitzungen | count |
claude_code.lines_of_code.count | Anzahl der geänderten Codezeilen | count |
claude_code.pull_request.count | Anzahl der erstellten Pull Requests | count |
claude_code.commit.count | Anzahl der erstellten Git-Commits | count |
claude_code.cost.usage | Kosten der Claude Code-Sitzung | USD |
claude_code.token.usage | Anzahl der verwendeten Token | tokens |
claude_code.code_edit_tool.decision | Anzahl der Code-Bearbeitungstool-Berechtigungsentscheidungen | count |
Metrikdetails
Sitzungszähler
Wird zu Beginn jeder Sitzung erhöht.
Attribute:
- Alle Standard-Attribute
Codezeilen-Zähler
Wird erhöht, wenn Code hinzugefügt oder entfernt wird.
Attribute:
- Alle Standard-Attribute
type
: ("added"
,"removed"
)
Pull Request-Zähler
Wird erhöht, wenn Pull Requests über Claude Code erstellt werden.
Attribute:
- Alle Standard-Attribute
Commit-Zähler
Wird erhöht, wenn Git-Commits über Claude Code erstellt werden.
Attribute:
- Alle Standard-Attribute
Kostenzähler
Wird nach jeder API-Anfrage erhöht.
Attribute:
- Alle Standard-Attribute
model
: Modellkennung (z.B. “claude-3-5-sonnet-20241022”)
Token-Zähler
Wird nach jeder API-Anfrage erhöht.
Attribute:
- Alle Standard-Attribute
type
: ("input"
,"output"
,"cacheRead"
,"cacheCreation"
)model
: Modellkennung (z.B. “claude-3-5-sonnet-20241022”)
Code-Bearbeitungstool-Entscheidungszähler
Wird erhöht, wenn der Benutzer die Verwendung von Edit-, MultiEdit-, Write- oder NotebookEdit-Tools akzeptiert oder ablehnt.
Attribute:
- Alle Standard-Attribute
tool
: Tool-Name ("Edit"
,"MultiEdit"
,"Write"
,"NotebookEdit"
)decision
: Benutzerentscheidung ("accept"
,"reject"
)language
: Programmiersprache der bearbeiteten Datei (z.B."TypeScript"
,"Python"
,"JavaScript"
,"Markdown"
). Gibt"unknown"
für nicht erkannte Dateierweiterungen zurück.
Ereignisse
Claude Code exportiert die folgenden Ereignisse über OpenTelemetry Logs/Events (wenn OTEL_LOGS_EXPORTER
konfiguriert ist):
Benutzer-Prompt-Ereignis
Wird protokolliert, wenn ein Benutzer einen Prompt einreicht.
Ereignisname: claude_code.user_prompt
Attribute:
- Alle Standard-Attribute
event.name
:"user_prompt"
event.timestamp
: ISO 8601-Zeitstempelprompt_length
: Länge des Promptsprompt
: Prompt-Inhalt (standardmäßig redigiert, aktivieren mitOTEL_LOG_USER_PROMPTS=1
)
Tool-Ergebnis-Ereignis
Wird protokolliert, wenn ein Tool die Ausführung abschließt.
Ereignisname: claude_code.tool_result
Attribute:
- Alle Standard-Attribute
event.name
:"tool_result"
event.timestamp
: ISO 8601-Zeitstempelname
: Name des Toolssuccess
:"true"
oder"false"
duration_ms
: Ausführungszeit in Millisekundenerror
: Fehlermeldung (bei Fehlschlag)
API-Anfrage-Ereignis
Wird für jede API-Anfrage an Claude protokolliert.
Ereignisname: claude_code.api_request
Attribute:
- Alle Standard-Attribute
event.name
:"api_request"
event.timestamp
: ISO 8601-Zeitstempelmodel
: Verwendetes Modell (z.B. “claude-3-5-sonnet-20241022”)cost_usd
: Geschätzte Kosten in USDduration_ms
: Anfragedauer in Millisekundeninput_tokens
: Anzahl der Eingabe-Tokenoutput_tokens
: Anzahl der Ausgabe-Tokencache_read_tokens
: Anzahl der aus dem Cache gelesenen Tokencache_creation_tokens
: Anzahl der für Cache-Erstellung verwendeten Token
API-Fehler-Ereignis
Wird protokolliert, wenn eine API-Anfrage an Claude fehlschlägt.
Ereignisname: claude_code.api_error
Attribute:
- Alle Standard-Attribute
event.name
:"api_error"
event.timestamp
: ISO 8601-Zeitstempelmodel
: Verwendetes Modell (z.B. “claude-3-5-sonnet-20241022”)error
: Fehlermeldungstatus_code
: HTTP-Statuscode (falls zutreffend)duration_ms
: Anfragedauer in Millisekundenattempt
: Versuchsnummer (für wiederholte Anfragen)
Tool-Entscheidungs-Ereignis
Wird protokolliert, wenn eine Tool-Berechtigungsentscheidung getroffen wird (akzeptieren/ablehnen).
Ereignisname: claude_code.tool_decision
Attribute:
- Alle Standard-Attribute
event.name
:"tool_decision"
event.timestamp
: ISO 8601-Zeitstempeltool_name
: Name des Tools (z.B. “Read”, “Edit”, “MultiEdit”, “Write”, “NotebookEdit”, etc.)decision
: Entweder"accept"
oder"reject"
source
: Entscheidungsquelle -"config"
,"user_permanent"
,"user_temporary"
,"user_abort"
, oder"user_reject"
Interpretation von Metriken- und Ereignisdaten
Die von Claude Code exportierten Metriken bieten wertvolle Einblicke in Nutzungsmuster und Produktivität. Hier sind einige häufige Visualisierungen und Analysen, die Sie erstellen können:
Nutzungsüberwachung
Metrik | Analysemöglichkeit |
---|---|
claude_code.token.usage | Aufschlüsselung nach type (input/output), Benutzer, Team oder Modell |
claude_code.session.count | Adoption und Engagement über die Zeit verfolgen |
claude_code.lines_of_code.count | Produktivität durch Verfolgung von Code-Hinzufügungen/-Entfernungen messen |
claude_code.commit.count & claude_code.pull_request.count | Auswirkungen auf Entwicklungsworkflows verstehen |
Kostenüberwachung
Die claude_code.cost.usage
-Metrik hilft bei:
- Verfolgung von Nutzungstrends über Teams oder Einzelpersonen
- Identifizierung von Sitzungen mit hoher Nutzung zur Optimierung
Kostenmetriken sind Näherungswerte. Für offizielle Abrechnungsdaten beziehen Sie sich auf Ihren API-Anbieter (Anthropic Console, AWS Bedrock oder Google Cloud Vertex).
Alarmierung und Segmentierung
Häufige Alarme, die zu berücksichtigen sind:
- Kostenspitzen
- Ungewöhnlicher Token-Verbrauch
- Hohes Sitzungsvolumen von bestimmten Benutzern
Alle Metriken können nach user.account_uuid
, organization.id
, session.id
, model
und app.version
segmentiert werden.
Ereignisanalyse
Die Ereignisdaten bieten detaillierte Einblicke in Claude Code-Interaktionen:
Tool-Nutzungsmuster: Analysieren Sie Tool-Ergebnis-Ereignisse, um zu identifizieren:
- Am häufigsten verwendete Tools
- Tool-Erfolgsraten
- Durchschnittliche Tool-Ausführungszeiten
- Fehlermuster nach Tool-Typ
Leistungsüberwachung: Verfolgen Sie API-Anfragedauern und Tool-Ausführungszeiten, um Leistungsengpässe zu identifizieren.
Backend-Überlegungen
Ihre Wahl der Metriken- und Logs-Backends bestimmt die Arten von Analysen, die Sie durchführen können:
Für Metriken:
- Zeit-Reihen-Datenbanken (z.B. Prometheus): Ratenberechnungen, aggregierte Metriken
- Spalten-Stores (z.B. ClickHouse): Komplexe Abfragen, eindeutige Benutzeranalyse
- Vollständige Observability-Plattformen (z.B. Honeycomb, Datadog): Erweiterte Abfragen, Visualisierung, Alarmierung
Für Events/Logs:
- Log-Aggregationssysteme (z.B. Elasticsearch, Loki): Volltext-Suche, Log-Analyse
- Spalten-Stores (z.B. ClickHouse): Strukturierte Ereignisanalyse
- Vollständige Observability-Plattformen (z.B. Honeycomb, Datadog): Korrelation zwischen Metriken und Ereignissen
Für Organisationen, die Daily/Weekly/Monthly Active User (DAU/WAU/MAU) Metriken benötigen, sollten Sie Backends in Betracht ziehen, die effiziente eindeutige Wert-Abfragen unterstützen.
Service-Informationen
Alle Metriken werden exportiert mit:
- Service-Name:
claude-code
- Service-Version: Aktuelle Claude Code-Version
- Meter-Name:
com.anthropic.claude_code
Sicherheits-/Datenschutzüberlegungen
- Telemetrie ist opt-in und erfordert explizite Konfiguration
- Sensible Informationen wie API-Schlüssel oder Dateiinhalte werden niemals in Metriken oder Ereignissen enthalten
- Benutzer-Prompt-Inhalte werden standardmäßig redigiert - nur die Prompt-Länge wird aufgezeichnet. Um die Benutzer-Prompt-Protokollierung zu aktivieren, setzen Sie
OTEL_LOG_USER_PROMPTS=1