Getting Started
azuredataexplorer exporter (v0.159.0) to send traces, metrics and logs over HTTPS using the Kusto ingestion SDK. This destination is separate from Azure Monitor/Application Insights. Profiles are unsupported.
Prepare the database and tables
Create an Azure Data Explorer cluster and a database namedoteldb (or set your own Database). The exporter does not create databases or tables. Run these commands separately in the Azure Data Explorer web UI:
https://mycluster.region.kusto.windows.net, rather than an ingest- URI or an OTLP endpoint. The collector needs outbound HTTPS access to Entra authentication, the cluster’s query/ingestion endpoints and the storage/queue endpoints used by queued ingestion.
Authentication
Choose one authentication mode:service_principal(default): register an application in Microsoft Entra ID, enter its application/client ID and tenant ID, and supply the client secret value. Odigos stores the client secret in a Kubernetes Secret and uses a destination-scoped environment reference. Grant the principal Database Ingestor on the target database. A browser login alone does not provide collector credentials.managed_identity: setsystemfor a system-assigned identity or the client ID UUID of a user-assigned identity. The identity must be available to the collector’s Azure runtime and have ingestion permissions.default: use the Azure SDK default credential chain inside the collector. Configure its environment or workload identity externally; Odigos does not mount workload identity tokens or propagate browser/CLI credentials automatically. Grant that identity ingestion permissions.
Queued and managed ingestion
queued is the default and works without a streaming policy. Azure queues and batches ingestion asynchronously; exporter success only confirms acceptance into the ingestion path. Wait for the batch policy, query the destination tables, and inspect .show ingestion failures when rows do not appear.
managed uses managed streaming ingestion with queued fallback. Enable streaming ingestion on the cluster and each selected table first:
JSON mappings and signal conversions
The exporter sends newline-delimited, gzip-compressed JSON rows in the schemas above, rather than raw OTLP envelopes. Attribute maps use Kustodynamic columns; log bodies are converted to strings. Traces retain identifiers, status/message, attributes, events and links. Metrics support gauges, sums, explicit histograms and summaries. Histograms become count, sum and bucket rows; summaries become count, sum and quantile rows. Exponential histogram metrics are dropped by v0.159.0; convert them to explicit histograms before export if needed. Profiles are unsupported.
Mapping fields take the name of an existing JSON ingestion mapping, not JSON itself. With the default schemas, leave them empty for identity mapping. For a custom schema, create a JSON mapping on each table, then enter its name. For example:
Microsoft Fabric
The same exporter supports Microsoft Fabric Real-Time Intelligence. Create an Eventhouse/KQL database and these tables, use its query URI and database name, and grant the selected Entra principal ingestion access. Streaming and mapping requirements still apply. Fabric compatibility is documented upstream; use the Azure Data Explorer destination for it.Verify ingestion
Send multiple batches for each enabled signal and query the corresponding table, for example:Configuring Destination Fields
Supported Signals:
Supported Signals:
✅ Traces
✅ Metrics
✅ Logs
❌ Profiles
- AZURE_DATA_EXPLORER_CLUSTER_URI
string: Cluster Query URI. HTTPS query URI of the Azure Data Explorer cluster or Fabric Eventhouse. Do not use the ingest- URI.- This field is required
- AZURE_DATA_EXPLORER_DATABASE
string: Database. An existing database containing the telemetry tables.- This field is required and defaults to
oteldb
- This field is required and defaults to
- AZURE_DATA_EXPLORER_AUTH_MODE
string: Authentication. Default credentials must be available inside the collector. Browser login credentials are not passed to Odigos.- This field is required and defaults to
service_principal
- This field is required and defaults to
- AZURE_DATA_EXPLORER_APPLICATION_ID
string: Application (Client) ID.- This field is required
- AZURE_DATA_EXPLORER_TENANT_ID
string: Tenant ID.- This field is required
- AZURE_DATA_EXPLORER_APPLICATION_KEY
string: Client Secret.- This field is required
- AZURE_DATA_EXPLORER_MANAGED_IDENTITY_ID
string: Managed Identity Client ID. Use system for system-assigned identity or the client ID UUID of a user-assigned identity available to the collector.- This field is required
- AZURE_DATA_EXPLORER_INGESTION_TYPE
string: Ingestion Mode. Queued ingestion is asynchronous. Managed ingestion requires streaming enabled on the cluster and selected tables.- This field is required and defaults to
queued
- This field is required and defaults to
- AZURE_DATA_EXPLORER_TRACES_TABLE
string: Traces Table.- This field is required and defaults to
OTELTraces
- This field is required and defaults to
- AZURE_DATA_EXPLORER_TRACES_MAPPING
string: Traces JSON Mapping Name. Optional name of a pre-created JSON ingestion mapping, not mapping JSON.- This field is optional
- AZURE_DATA_EXPLORER_METRICS_TABLE
string: Metrics Table.- This field is required and defaults to
OTELMetrics
- This field is required and defaults to
- AZURE_DATA_EXPLORER_METRICS_MAPPING
string: Metrics JSON Mapping Name. Optional name of a pre-created JSON ingestion mapping, not mapping JSON.- This field is optional
- AZURE_DATA_EXPLORER_LOGS_TABLE
string: Logs Table.- This field is required and defaults to
OTELLogs
- This field is required and defaults to
- AZURE_DATA_EXPLORER_LOGS_MAPPING
string: Logs JSON Mapping Name. Optional name of a pre-created JSON ingestion mapping, not mapping JSON.- This field is optional
Adding Destination to Odigos
There are two primary methods for configuring destinations in Odigos:Using the UI
1
Use the Odigos CLI to access the UI
2
Click on
Add Destination, select Azure Data Explorer and follow the on-screen instructionsUsing Kubernetes manifests
1
Save the YAML below to a file (e.g.
azuredataexplorer.yaml)2
Apply the YAML using
kubectl