Troubleshooting
I'm seeing duplicate spans
This is expected when both eBPF and SDK instrumentation are active for the same service. Each source captures the same LLM call independently — you'll see one span from eBPF and one from the SDK. Both are correct; cost is not double-counted. When groundcover detects an SDK span for the same call, eBPF cost and token data is excluded from aggregations.
I don't see AI data
Work through the path you're using.
AI coding-tool integrations (Claude Code, Claude Cowork, Codex)
AI Observability shows GenAI traces — spans with gen_ai.* attributes. The Claude Code, Claude Cowork, and Codex data-source integrations ship tool-usage telemetry (logs, plus metrics for Claude Code), not GenAI traces, so they don't appear here. See AI Tools Observability for where to find the data.
eBPF Path
Unsupported provider. eBPF auto-detects OpenAI, Anthropic, and AWS Bedrock only. Calls to Vertex AI, Azure OpenAI, Cohere, or a self-hosted model appear as regular HTTP spans, not in AI Observability. Check Supported Providers for the current list. If your provider isn't listed, add SDK instrumentation instead, or contact us to request eBPF support for your provider.
API gateway or proxy in the path. If your service calls a cloud-hosted gateway (OpenRouter, Azure OpenAI Service, LiteLLM Cloud) instead of OpenAI, Anthropic, or AWS Bedrock directly, eBPF doesn't recognize the hostname and the call appears as regular HTTP. Self-hosted proxies (LiteLLM, Portkey running in your cluster) are not affected — eBPF sees both hops. To get GenAI visibility through an unsupported gateway, add SDK instrumentation to your calling service. Contact us to request native support for your gateway.
Sensor version. eBPF provider support ships in sensor releases. Check that you're running a current version — Installation & Updating.
SDK Path
Missing required attributes. Your SDK must emit
gen_ai.operation.namefor spans to appear in AI Observability. Valid values:chat,text_completion,embeddings,invoke_agent,execute_tool,create_agent. See required attributes and use the Data Sources page for setup instructions specific to your SDK.OTel exporter not configured. Confirm your service's OTLP exporter points to groundcover's collector endpoint. The Data Sources page has your endpoint and setup steps.
SDK not listed. Check the Data Sources page for supported SDKs. If yours isn't listed, contact us — we're actively expanding SDK support.
Spans Disappeared
Check whether a kill-switch rule is active in Traces Pipeline Settings. A set(drop, true) rule on protocol_type == "gen_ai" drops all GenAI spans before storage. See Disable GenAI Data Collection.
No Content in Spans
eBPF: Content is captured automatically. If it's missing, check for a content-reduction or kill-switch rule in Traces Pipeline Settings.
SDK: Check whether
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=falseis set in your environment. With this flag off, spans arrive with all performance metadata but no content. Remove it or set it totrueto restore content capture. See Metadata-Only Mode for details.
Cost Shows Unpriced
The gc.llm_cost.status attribute shows unpriced when groundcover doesn't have pricing for the model in its pricing table. This typically happens with newly released models, fine-tuned models, or custom model names. Cost will populate automatically once the pricing table is updated. See groundcover Enrichment for details.
Last updated
