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:

# 1. Telemetrie aktivieren
export CLAUDE_CODE_ENABLE_TELEMETRY=1

# 2. Exporter wählen (beide sind optional - konfigurieren Sie nur was Sie benötigen)
export OTEL_METRICS_EXPORTER=otlp       # Optionen: otlp, prometheus, console
export OTEL_LOGS_EXPORTER=otlp          # Optionen: otlp, console

# 3. OTLP-Endpunkt konfigurieren (für OTLP-Exporter)
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# 4. Authentifizierung festlegen (falls erforderlich)
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer your-token"

# 5. Für Debugging: Export-Intervalle reduzieren
export OTEL_METRIC_EXPORT_INTERVAL=10000  # 10 Sekunden (Standard: 60000ms)
export OTEL_LOGS_EXPORT_INTERVAL=5000     # 5 Sekunden (Standard: 5000ms)

# 6. Claude Code ausführen
claude

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:

{
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1",
    "OTEL_METRICS_EXPORTER": "otlp",
    "OTEL_LOGS_EXPORTER": "otlp",
    "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
    "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.company.com:4317",
    "OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer company-token"
  }
}

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

UmgebungsvariableBeschreibungBeispielwerte
CLAUDE_CODE_ENABLE_TELEMETRYAktiviert Telemetrie-Sammlung (erforderlich)1
OTEL_METRICS_EXPORTERMetriken-Exporter-Typ(en) (kommagetrennt)console, otlp, prometheus
OTEL_LOGS_EXPORTERLogs/Events-Exporter-Typ(en) (kommagetrennt)console, otlp
OTEL_EXPORTER_OTLP_PROTOCOLProtokoll für OTLP-Exporter (alle Signale)grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_ENDPOINTOTLP-Collector-Endpunkt (alle Signale)http://localhost:4317
OTEL_EXPORTER_OTLP_METRICS_PROTOCOLProtokoll für Metriken (überschreibt allgemein)grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_METRICS_ENDPOINTOTLP-Metriken-Endpunkt (überschreibt allgemein)http://localhost:4318/v1/metrics
OTEL_EXPORTER_OTLP_LOGS_PROTOCOLProtokoll für Logs (überschreibt allgemein)grpc, http/json, http/protobuf
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTLP-Logs-Endpunkt (überschreibt allgemein)http://localhost:4318/v1/logs
OTEL_EXPORTER_OTLP_HEADERSAuthentifizierungs-Header für OTLPAuthorization=Bearer token
OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEYClient-Schlüssel für mTLS-AuthentifizierungPfad zur Client-Schlüsseldatei
OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATEClient-Zertifikat für mTLS-AuthentifizierungPfad zur Client-Zertifikatsdatei
OTEL_METRIC_EXPORT_INTERVALExport-Intervall in Millisekunden (Standard: 60000)5000, 60000
OTEL_LOGS_EXPORT_INTERVALLogs-Export-Intervall in Millisekunden (Standard: 5000)1000, 10000
OTEL_LOG_USER_PROMPTSAktiviert 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:

UmgebungsvariableBeschreibungStandardwertBeispiel zum Deaktivieren
OTEL_METRICS_INCLUDE_SESSION_IDsession.id-Attribut in Metriken einschließentruefalse
OTEL_METRICS_INCLUDE_VERSIONapp.version-Attribut in Metriken einschließenfalsetrue
OTEL_METRICS_INCLUDE_ACCOUNT_UUIDuser.account_uuid-Attribut in Metriken einschließentruefalse

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:

# Benutzerdefinierte Attribute für Team-Identifikation hinzufügen
export OTEL_RESOURCE_ATTRIBUTES="department=engineering,team.id=platform,cost_center=eng-123"

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

# Konsolen-Debugging (1-Sekunden-Intervalle)
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console
export OTEL_METRIC_EXPORT_INTERVAL=1000

# OTLP/gRPC
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# Prometheus
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=prometheus

# Mehrere Exporter
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=console,otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json

# Verschiedene Endpunkte/Backends für Metriken und Logs
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_METRICS_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://metrics.company.com:4318
export OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=http://logs.company.com:4317

# Nur Metriken (keine Events/Logs)
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_METRICS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

# Nur Events/Logs (keine Metriken)
export CLAUDE_CODE_ENABLE_TELEMETRY=1
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317

Verfügbare Metriken und Ereignisse

Standard-Attribute

Alle Metriken und Ereignisse teilen diese Standard-Attribute:

AttributBeschreibungKontrolliert durch
session.idEindeutige SitzungskennungOTEL_METRICS_INCLUDE_SESSION_ID (Standard: true)
app.versionAktuelle Claude Code-VersionOTEL_METRICS_INCLUDE_VERSION (Standard: false)
organization.idOrganisations-UUID (bei Authentifizierung)Immer enthalten wenn verfügbar
user.account_uuidKonto-UUID (bei Authentifizierung)OTEL_METRICS_INCLUDE_ACCOUNT_UUID (Standard: true)
terminal.typeTerminal-Typ (z.B. iTerm.app, vscode, cursor, tmux)Immer enthalten wenn erkannt

Metriken

Claude Code exportiert die folgenden Metriken:

MetriknameBeschreibungEinheit
claude_code.session.countAnzahl der gestarteten CLI-Sitzungencount
claude_code.lines_of_code.countAnzahl der geänderten Codezeilencount
claude_code.pull_request.countAnzahl der erstellten Pull Requestscount
claude_code.commit.countAnzahl der erstellten Git-Commitscount
claude_code.cost.usageKosten der Claude Code-SitzungUSD
claude_code.token.usageAnzahl der verwendeten Tokentokens
claude_code.code_edit_tool.decisionAnzahl der Code-Bearbeitungstool-Berechtigungsentscheidungencount

Metrikdetails

Sitzungszähler

Wird zu Beginn jeder Sitzung erhöht.

Attribute:

Codezeilen-Zähler

Wird erhöht, wenn Code hinzugefügt oder entfernt wird.

Attribute:

Pull Request-Zähler

Wird erhöht, wenn Pull Requests über Claude Code erstellt werden.

Attribute:

Commit-Zähler

Wird erhöht, wenn Git-Commits über Claude Code erstellt werden.

Attribute:

Kostenzähler

Wird nach jeder API-Anfrage erhöht.

Attribute:

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-Zeitstempel
  • prompt_length: Länge des Prompts
  • prompt: Prompt-Inhalt (standardmäßig redigiert, aktivieren mit OTEL_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-Zeitstempel
  • name: Name des Tools
  • success: "true" oder "false"
  • duration_ms: Ausführungszeit in Millisekunden
  • error: 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-Zeitstempel
  • model: Verwendetes Modell (z.B. “claude-3-5-sonnet-20241022”)
  • cost_usd: Geschätzte Kosten in USD
  • duration_ms: Anfragedauer in Millisekunden
  • input_tokens: Anzahl der Eingabe-Token
  • output_tokens: Anzahl der Ausgabe-Token
  • cache_read_tokens: Anzahl der aus dem Cache gelesenen Token
  • cache_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-Zeitstempel
  • model: Verwendetes Modell (z.B. “claude-3-5-sonnet-20241022”)
  • error: Fehlermeldung
  • status_code: HTTP-Statuscode (falls zutreffend)
  • duration_ms: Anfragedauer in Millisekunden
  • attempt: 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-Zeitstempel
  • tool_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

MetrikAnalysemöglichkeit
claude_code.token.usageAufschlüsselung nach type (input/output), Benutzer, Team oder Modell
claude_code.session.countAdoption und Engagement über die Zeit verfolgen
claude_code.lines_of_code.countProduktivität durch Verfolgung von Code-Hinzufügungen/-Entfernungen messen
claude_code.commit.count & claude_code.pull_request.countAuswirkungen 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