GoodMemGoodMem
How-To Guides

Troubleshoot tracing

Verify local spans, collector receipt, and backend delivery before diagnosis.

Troubleshoot tracing

Use one known request to locate the export stage that fails. The tables below connect each symptom to its likely cause. A healthy server can still have an incorrect exporter endpoint, rejected credentials, or a sampler that excludes the request.

Verify each stage

The response goodmem-request-id header matches the span attribute goodmem.request.id, which is separate from the trace ID.

StageActionWhat it confirms
Local span outputSelect logging on a test server. Find the request span in its outputGoodMem creates and samples the span
Collector receiptSelect otlp. Find the request ID in the collector debug outputThe collector receives the span over OTLP
Backend receiptFind the trace in the destination backend or its APIThe backend stores the trace for that request

For the local check, set these variables on a test server:

OTEL_TRACES_EXPORTER=logging
OTEL_TRACES_SAMPLER=always_on
GOODMEM_OTEL_EXPORT_PROFILE=neutral
  1. Restart the server.
  2. Send the verification request.
  3. Find its goodmem.request.id in the server output.

The local output contains span identifiers and metadata. Restore the previous exporter after this check.

For the collector check, use the debug exporter configuration.

  1. Set the GoodMem trace exporter to otlp.
  2. Select the collector endpoint and protocol.
  3. Restart the server or recreate its container.
  4. Send another verification request.
  5. Find its request ID and trace ID in the collector output.

For direct backend export, omit the collector check. At the backend, check the service name, request metadata, and expected parent and child spans. If the vendor converts trace identifiers, match the request through its metadata.

No traces appear

CheckAction
Export is offSet OTEL_TRACES_EXPORTER=otlp
SDK is offRemove OTEL_SDK_DISABLED=true
Container lacks the variablesAdd the variables to the service environment before container recreation
JVM property overrides an environment valueCheck the Java launch properties
Startup configuration failedCheck goodmem_otel_initialization_failed: 1 means initialization failed; 0 confirms no startup failure, not delivery
Sampler excludes the requestFor a controlled check, select always_on
External parent is unsampledCheck the parent decision and the configured sampler
Wrong backend viewCheck the service, project, region, and time window

Collector receipt fails

SymptomCheck
Connection refused or timeoutReceiver address, port, network policy, and container network
Receiver works from the host onlyUse the host gateway address instead of the server container's localhost
HTTP route errorGeneric HTTP endpoints gain /v1/traces; trace-specific endpoints use the supplied path
Protocol errorMatch grpc or http/protobuf to the receiver
Langfuse rejects exportSelect http/protobuf; the SDK default is grpc
Authentication failsCheck the destination credentials and percent-encoded header values
TLS failsCheck the CA, hostname, mounted paths, and paired mTLS certificate/key

Check both generic and trace-specific settings against the configuration reference. Keep credential headers out of diagnostic output.

Collector receipt succeeds but backend receipt fails

Check the destination exporter diagnostics, backend project, collector filters, and destination transforms. For LangSmith, check the parent policy.

A fan-out collector needs the neutral GoodMem profile and separate destination transforms. A filter that retains only gen_ai.* spans removes API and retrieval ancestors from the trace.

The trace appears incomplete

SymptomExplanation
Input and output panels are emptyThe trace data controls exclude content
Token usage is absentThe provider did not supply that counter, or the provider interface lacks it
Cost is absentThe backend needs usage data and its own price configuration
A job appears in another traceEach background job attempt has its own trace; use the job ID to correlate attempts
Final spans are absent after shutdownCheck the termination grace period and exporter availability during shutdown

Spans disappear under load

Check collector availability and export errors first. If export works, inspect the batch queue and export timeouts. A larger queue absorbs short bursts but uses more memory; sustained export failure still causes span loss. Use the batch controls to fit the deployment.