Troubleshooting
Common issues and solutions when using Obtrace Zero auto-instrumentation.
Troubleshooting
Pod is not being instrumented
Check 1: Is the operator running?
The operator pod should be Running with 1/1 ready.
Check 2: Is the namespace excluded?
If obtrace.io/exclude=true is set, the namespace is skipped.
Check 3: Does an ObtraceInstrumentation exist?
If no resources exist, create one:
Check 4: Is the Pod excluded?
Check 5: Is the Pod already instrumented?
If true, the Pod was already mutated. Delete and recreate it to re-instrument.
Telemetry not arriving in Obtrace
Check 1: Agent startup message
Check container logs for the agent startup message:
Expected: [obtrace-zero] auto-instrumentation active for <service> (<env>)
If missing, the agent did not load. Check that the init container completed:
Check 2: Ingest endpoint reachable
From inside the Pod:
Expected: 400 (bad request, but reachable). If 000 or connection refused, the ingest endpoint is unreachable.
Check 3: API key valid
If you see 401 or 403 responses, the API key is invalid or expired.
Wrong language detected
Option 1: Use a language hint
Add a label to your Pod template:
Option 2: Use CRD language hints
Option 3: Use an environment variable
Add to your container spec:
NODE_OPTIONS conflict
If your application already uses NODE_OPTIONS, the injected --require flag is appended. If there is a conflict, you can set obtrace.io/exclude: "true" and instrument manually with the Node.js SDK.
JAVA_TOOL_OPTIONS conflict
Similar to NODE_OPTIONS — if you already use JAVA_TOOL_OPTIONS for other JVM flags, the -javaagent flag is appended. The JVM handles multiple JAVA_TOOL_OPTIONS entries by concatenating them.
eBPF sidecar OOMKilled
If the eBPF sidecar is OOMKilled, your workload may have unusually high connection counts. Increase the memory limit by creating a custom values override:
eBPF capabilities denied
If your cluster has PodSecurityPolicies or PodSecurityStandards that restrict capabilities, the eBPF sidecar will fail to start. Options:
- Add an exemption for the
obtrace-ebpfcontainer - Switch to
strategy: sdkfor namespaces with strict policies - Use a namespace-level PodSecurity exemption:
Webhook timeout
If Pod creation is slow after installing Obtrace Zero, check the webhook timeout:
Default is 10 seconds. The webhook uses failurePolicy: Ignore, so if the operator is unresponsive, Pods are created without instrumentation rather than being blocked.
Operator logs
The operator logs discovery results, webhook mutation events, and errors. Look for:
discovered N workloads— periodic discovery scanlang=nodejs framework=express strategy=sdk confidence=0.9— per-workload detectionerror— any operational issues
Removing instrumentation from a Pod
Add the exclude annotation and restart:
The new Pod will be created without instrumentation.
To remove instrumentation from an entire namespace: