Skip to main content

Getting Started

azuredataexplorer Odigos uses the bundled OpenTelemetry 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 named oteldb (or set your own Database). The exporter does not create databases or tables. Run these commands separately in the Azure Data Explorer web UI:
Use the cluster query URI, for example 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: set system for 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.
Only the chosen mode is emitted to the collector. Missing/invalid credentials fail collector validation or authentication. Creating tables and assigning permissions requires additional administrative privileges beyond ingestion.

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:
Odigos enables a bounded exporter sending queue and retries for up to five minutes. These cannot detect every asynchronous queued-ingestion failure. Check destination-side failures for missing tables, invalid mappings and insufficient permissions.

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 Kusto dynamic 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:
This example maps only timestamp and body; define every column you need in your custom mapping.

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:
Run each query separately. Verify trace IDs, metric values and log bodies. Test an invalid credential or mapping separately and confirm rejection/failure reporting before restoring valid settings. See Microsoft’s OpenTelemetry connector setup and the pinned exporter documentation for deployment and schema requirements.

Configuring Destination Fields

✅ 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
  • 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
  • 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
  • AZURE_DATA_EXPLORER_TRACES_TABLE string : Traces Table.
    • This field is required and defaults to OTELTraces
  • 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
  • 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
  • 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
Create the database and telemetry tables before exporting. Exponential histogram metrics and profiles are unsupported by the bundled exporter. Queued acceptance does not guarantee successful ingestion; check KQL results and ingestion failures.

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 instructions
Using Kubernetes manifests
1
Save the YAML below to a file (e.g. azuredataexplorer.yaml)
2
Apply the YAML using kubectl