Architecture
Odigos Architecture For Sources
Odigos Instrumentation Flow:
- User selects a workload (Deployment, StatefulSet, or DaemonSet) to auto instrument by setting the
odigos-instrumentation
label on the workload or the namespace. - Odigos
instrumentor
controller watches for theodigos-instrumentation
label on the workload or the namespace and create aninstrumentationconfig.odigos.io
object per workload. - Odigos
odiglet
controller watches for theinstrumentationconfig.odigos.io
object and runs a runtime inspection on running pods to detect the programming language per container. The result is written into theinstrumentedapplication.odigos.io
object per workload. - Odigos
instrumentor
controller watches for theinstrumentedapplication.odigos.io
object and adds a resource request into each pod spec of all relevant containers in the workload manifest. These resource requests are called “instrumentation devices”. - Kubernetes detects the change in the manifest and rollout restart the pods with the new instrumentation devices.
- New pods are scheduled and started. Odiglet resolves the resource request by mounting the auto instrumentation code and relevant environment variables into the container.
- The auto instrumentation code starts the OpenTelemetry SDK and sends telemetry data to the odigos pipeline.