Datastreams let you split your observability data into multiple, independent pipelines - each routed to its own destination and optionally enhanced with custom actions like sampling, enrichment, or masking.
This feature is in beta. It may be subject to changes and improvements based on user feedback.
Odigos supports Datastreams, a powerful feature that allows you to split telemetry sources into multiple logical streams. Each stream can be independently routed to different destinations and have specific actions applied—such as sampling, attribute enrichment, masking rules, and more.
There are many use cases for adopting Datastreams, including:
Cost optimization - Route lower-priority services (like internal or backoffice apps) to more cost-effective destinations, such as Parquet files stored in S3.
Targeted processing - Apply custom processing (e.g., sampling, enrichment) to only a subset of services.
Gradual migration - Test a new destination on specific services before committing to a full migration.
Organizational segmentation - Split data based on development teams, product areas, or environments.
After installing Odigos CLI, run the following command to start the Odigos UI:
You’ll be taken to the Setup page. This is where your journey with Odigos begins, and you’ll be asked to provide a few initial details:
You can create a new Datastream from the Overview page. Click the + NEW
button at the top-left (under the current Datastream views) and follow the same steps as in the setup phase.
After installing Odigos CLI, run the following command to start the Odigos UI:
You’ll be taken to the Setup page. This is where your journey with Odigos begins, and you’ll be asked to provide a few initial details:
You can create a new Datastream from the Overview page. Click the + NEW
button at the top-left (under the current Datastream views) and follow the same steps as in the setup phase.
This example demonstrates how to configure example-source
to send telemetry to jaeger-example
through the example
Datastream.
For example:
For example:
Now let’s take Jaeger as complete example here:
💡 Tip: Even if you configure datastreams via manifests, you can still view and manage them through the Odigos UI for better visibility.
Trace integrity - Distributed traces often span multiple services that participate in the same operation. If you assign these services to different datastreams, the trace will be broken across destinations. Each destination will only receive part of the trace, making it incomplete and harder to troubleshoot. To preserve trace integrity, keep all services involved in a single transaction within the same datastream.
Action support - At present, actions defined in Odigos are applied globally to all streams. Stream-specific actions (e.g., custom sampling rules per datastream) are not yet supported but will be in a future release.