Skip to main content
Version: 6.2

Data Sources

The AI Observability module collects AI infrastructure telemetry from multiple sources and normalizes it into a unified set of gen_ai_* runtime indexes based on the OpenTelemetry GenAI data model. Normalized data is used by dashboards, inventory, and global Service Monitor Toolkit metrics.


Connected Sources​

SourceTypeCollection RouteWhat is collectedWhere it goes
DCGM Exporter /metricsGPUSAF Beat Scriptbeat - LogstashGPU util, memory, temperature, ECC, XID errors, energy consumptiongen_ai_gpu_metrics
vLLM/metricsInference runtimeSAF Beat Scriptbeat - LogstashQueue depth, latency, KV cache, prefix cachegen_ai_metrics
Claude Code (.claude/projects)Local clientSAF Beat Filebeat - LogstashRequests, responses, tokens, session eventsgen_ai_events
Claude Code OTLP telemetryLocal clientOTLP domainclaude_code.* metrics: sessions, tokens, costs, code lines, commits, pull requests, edit decisions, and active time. Events: user_prompt, api_request, api_error, tool_decision, tool_resultgen_ai_metrics, gen_ai_events
Claude Code subscription limitsLocal clientLimit collector - OTLP domainclaude_code.rate_limits event: five-hour and weekly window utilization, model-specific limit, and window reset timegen_ai_events
Claude Desktop (Library/Logs/Claude)Local clientSAF Beat Filebeat - LogstashClaude Desktop application events and errors (macOS)gen_ai_events
Codex (.codex/sessions)Local clientSAF Beat Filebeat - LogstashRequests, responses, tokens, TTFT, reasoning, cachegen_ai_events, gen_ai_cost
LiteLLM_SpendLogs PostgreSQLLLM gatewayLogstash JDBCTokens, cost, provider, model, durationgen_ai_cost, gen_ai_events
AI agents OTLP tracesAI agentOTLP-domainAgent steps, tool calls, spans, errorsgen_ai_traces
AI agents OTLP logsAI agentOTLP-domainQuestions, answers, diagnosticsgen_ai_events
AI agents OTLP metricsAI agentOTLP-domainRequest rate, error rate, custom latencygen_ai_metrics
LiteLLM OTLP callbackLLM gatewayOTLP-domainRequest traces, latency, routinggen_ai_traces

The Claude Code client sends metrics and events over OTLP regardless of the subscription plan. Prompt text in OTel events is hidden by default (<REDACTED>); only the .claude/projects file-based channel provides full conversation text. The channels are linked by session_id at the session level and request_id at the request level.

Subscription-limit utilization is not part of the client telemetry. A limit collector on the member's machine collects it: a launchd agent queries the subscription reporting endpoint every 15 minutes and sends an event to the OTLP domain. The terminal client's status-line command provides a second channel. The snapshot source is recorded in limit_source as usage_api or statusline.


Index Model​

The module uses a unified runtime index set with wildcard patterns:

IndexTime fieldSourcesPurpose
gen_ai_events*@timestampLiteLLM, AI agents, Claude Code, CodexLLM requests, agent and local client events, responses, errors, and Claude subscription-limit snapshots
gen_ai_traces*startTimeLiteLLM OTel, AI agentsTraces and spans of AI requests and agent steps
gen_ai_metrics*@timestampvLLM, AI agents, Claude CodePerformance metrics of inference services and agents, and Claude Code usage metrics
gen_ai_cost*@timestampLiteLLM SpendLogs, CodexCosts and usage by models, providers, commands
gen_ai_gpu_metrics*@timestampDCGM ExporterHardware GPU metrics: load, memory, temperature, errors

The gen_ai_events template explicitly defines numeric OTel event attributes and limit-snapshot fields so they can be aggregated:

  • log.attributes.input_tokens, output_tokens, cache_read_tokens, cache_creation_tokens - request tokens
  • log.attributes.cost_usd, duration_ms, ttft_ms - cost, duration, and time to first token
  • log.attributes.prompt_length, tool_input_size, tool_output_size - prompt and tool data sizes
  • log.attributes.limit_* - limit-window utilization percentage, reset time, and time until reset

Module Lookups​

Nine claude_code_* lookups supplement Claude Code telemetry. Module jobs build seven of them from gen_ai_* indexes. Six are equivalents of Analytics API reports, Compliance API reports, and the subscription spend report: their structure follows Anthropic reports, but their data is calculated from module telemetry.

LookupContentsPopulated by
claude_code_analytics_dailyan equivalent of the Analytics API daily summary: sessions, code lines, commits, pull requests, edit decisions, cost, and active time per memberjob using gen_ai_metrics
claude_code_analytics_models_dailyan equivalent of the Analytics API model breakdown: four token types and costjob using gen_ai_metrics
claude_code_analytics_tools_dailyan equivalent of the Analytics API tool breakdown: accepted and rejected editsjob using gen_ai_metrics
claude_code_activity_dailyan equivalent of the Compliance API audit feed: daily event counts by member, event type, and channeljob using gen_ai_events
claude_code_sessionsan equivalent of the Compliance API session list: session metadata and member identitytwo jobs using gen_ai_events and gen_ai_metrics
claude_code_spend_reportan equivalent of the subscription spend report: daily requests, tokens, and costs by member and modeljob using gen_ai_metrics
claude_code_identitymapping of an OS account and host to a member addressjob using gen_ai_events and gen_ai_metrics
claude_code_membersorganization members: address, name, role, seat type, status, and join dateadministrator
claude_code_seat_pricingmonthly seat price, included tokens, and USD equivalent of limits by seat typeinstallation utility adds Team plan rows; an administrator adjusts them to the contract

Costs in these equivalent-report lookups are estimates. In claude_code_spend_report, gross_spend contains the list-price cost from client telemetry, while net_spend contains that cost with the contract discount specified in the job.


Notes​

  • ISM policies manage index lifecycle (rollover, retention) and are included in the content module
  • SA Data Collector, SAF Beat, and otlp_collector configurations and the subscription-limit collector are included in the data collection configurations