Troubleshooting Sources
If you selected a workload to auto instrument and you do not see any data, use the checklist below to troubleshoot the issue.
It is recommended to use the odigos describe
command to get detailed information in one command.
1. Odigos Instrumentation Label
The odigos describe command will show the status of the odigos-instrumentation
label.
If you expect a different status, check the workload manifest and namespace manifests for the odigos-instrumentation
label.
The label is either set by the UI, explicitly set in the manifest, or managed by internal workflows like using kubectl
.
2. Odigos Instrumentation Config
The odigos describe command will show the status of the instrumentationconfig.odigos.io
object,
which should always exist for every instrumented workload, and absent for non-instrumented workloads.
Please allow few seconds for the object to be created after the label is set.
If the status is not as expected, check the odigos-instrumentor
deployment in the odigos-system
namespace for health and errors, and report any issues to the Odigos team.
The instrumentationconfig
resource is created by odigos instrumentor with the following details:
name
: concatenated from the lowercase workload kind and name. for example:deployment-myservice
.namespace
: the namespace of the workload.
Examine the instrumentationconfig.odigos.io
object for the workload:
3. Odigos Instrumented Application
The instrumented application resource records runtime inspection results and contains the containers, programming language, and relevant env vars.
Each workload should have an instrumentedapplication.odigos.io
object, and it should be deleted when the workload is uninstrumented.
If the object is not created when expected:
- Please allow few seconds for the object to be created after the
instrumentationconfig
object is created. - The object will be created only if there are running pods for the workload.
- For the object to be created, the
odiglet
daemonset must be running and healthy on nodes that run this workload.
The instrumentedapplication
resource is created by odiglet daemonset controller with the following details:
name
: concatenated from the lowercase workload kind and name. for example:deployment-myservice
.namespace
: the namespace of the workload.
Examine an instrumentedapplication.odigos.io
object for the workload:
4. Language not Detected
Use the odigos describe
command to check the programming language detected by the odiglet controller per container.
If the programming language is not detected:
- odigos only supports the following platforms and languages: Node.js, Python, Java, Go, and .NET. Perhaps the container is running executable in a different language.
- containers that starts with a script or a shell command that exec to the main process may not be detected correctly. Contact us for support.
- check the
odiglet
pod in the namespaceodigos-system
on a node that runs the workload for health and errors.
5. Odigos Instrumentation Devices not Added
The odigos describe command will show the instrumentation devices added to the pod spec for the workload.
If the instrumentation devices are missing:
- Please allow few seconds after the
instrumentedapplication
object is created or updated for the instrumentation devices to be added to the pod spec. - The instrumentation devices are added to the pod spec only after the telemetry pipeline is healthy and ready to receive telemetry data.
- check the
odigos-instrumentor
logs in theodigos-system
namespace for health any errors.
The instrumentation devices is selected based on the programming language and the configuration in the global odigos config resource:
To examine the resources for a workload, use this as an example:
6. Pods Instrumentation Devices not Matching Manifest
The odigos describe command will show the pods for this workload and the instrumentation devices resource they have.
If the instrumentation devices are missing or not matching the manifest:
- Please watch for any new pods that are created after the manifest is updated. New pods might be created in few minutes, or the mismatched pods might be terminated and replaced.
- Check the pod logs for any errors or warnings that might prevent the instrumentation devices from being applied.
- New pods will be scheduled by k8s to nodes where the
odiglet
daemonset is running and healthy. Check theodiglet
pods for any errors preventing the odiglet pod from running. - Check general k8s events and logs for any issues that might prevent the pods from being scheduled or started in your cluster.
7. Instrumentation Instance Unhealthy
The odigos describe command will show the status of the instrumentation instance for the workload. Instrumentation instances are currently available only for go, node.js, and python. They describe the status of the OpenTelemetry SDK agent running in a pod container.
If the instrumentation instance is unhealthy:
- Use the Message field to get more information about the issue.
- Check the pod logs for the container that runs the instrumentation instance for any errors or warnings.
- Check the
odiglet
daemonset logs in theodigos-system
namespace, on the node that runs the pod, for any errors regarding the instrumentation instance.