Microsoft has announced expanded support for OpenTelemetry in Azure Logic Apps (Standard and Hybrid) and Azure Functions (Public Preview).
OpenTelemetry (OTel), an open-source observability framework under the Cloud Native Computing Foundation (CNCF), provides a standardized approach for generating, collecting, and exporting logs, metrics (though metrics export is currently not supported in Logic Apps), and traces. By abstracting away vendor-specific instrumentation, OpenTelemetry enables interoperability with various observability backends, including Azure Monitor, Grafana Tempo, and Jaeger.
For Azure Logic Apps, particularly in hybrid or on-premises deployments, and Azure Functions, OTel elevates diagnostic capabilities beyond default Application Insights telemetry, promoting better correlation across host and application code and consistent, standards-based data generation.
Configuration for OpenTelemetry in Azure Logic Apps (Standard and Hybrid) and Azure Functions involves updating the host.json file to enable “telemetryMode”: “OpenTelemetry” and defining application settings for the OTLP exporter endpoint (OTEL_EXPORTER_OTLP_ENDPOINT) and optional headers (OTEL_EXPORTER_OTLP_HEADERS). This can be done via Visual Studio Code or directly through the Azure Portal, adapting to the specific hosting environment (Workflow Standard Plan, App Service Environment v3, or Hybrid containers).
(Source: Microsoft Techcommunity blog post)
Microsoft’s strategic investments in OpenTelemetry extend beyond Logic Apps and Functions, aiming for a comprehensive and standardized approach to observability across its cloud offerings. Moreover, Azure provides a suite of products for collecting telemetry data in a standardized way and consuming it through curated experiences on Azure Monitor and local tools.
Key components of this strategy include:
- Azure Monitor OpenTelemetry Distro: This is Microsoft’s customized, supported, and open-sourced version of the OpenTelemetry SDKs, recommended for most customers. It simplifies enablement by bundling the OTel SDK/API with instrumentation libraries across logs, metrics, and traces for .NET, Java, JavaScript (Node.js), and Python. Automatic instrumentation solutions using this distribution are also integrated into App Service for Java and Python apps, as well as into Java Functions.
- Azure SDKs: These are instrumented with OpenTelemetry APIs to power end-to-end observability, with all supported languages emitting HTTP and/or Messaging Tracing Semantics.
- .NET Aspire: This opinionated cloud-native stack includes observability by default with OpenTelemetry. Its “Developer Dashboard” allows observing OpenTelemetry signals in real-time during debugging, supporting applications in any OTel-supported language.
- Azure Monitor Application Insights: Azure’s application performance monitoring (APM) solution leverages OpenTelemetry to enhance experiences such as Application Map (a visual overview of the architecture) and Transaction Search (for identifying issues).
- Azure Container Apps: Features an OpenTelemetry agent that automatically collects and exports data to any OTLP-supported endpoint via environment variables, requiring no manual configuration.
- Edge and Multicloud Scenarios: Solutions like the OpenTelemetry Collector, Azure Data Explorer Exporter, and the Azure Monitor pipeline at edge (in public preview) facilitate high-scale data ingestion and routing from edge environments, enabling
Microsoft’s David Fowler, a prominent figure in Azure development, recently tweeted:
We’re building first-class support for Azure Functions in Aspire, and I am very excited. We’re making changes to enable open telemetry everywhere, and to make local development against various emulators seamless.
Currently, OpenTelemetry in Logic Apps supports HTTP, Service Bus, and Event Hub trigger types, and metrics export is not yet available. For Azure Functions, OpenTelemetry support is in preview, and some limitations apply, such as the Azure portal not supporting log streaming or recent function invocation traces when the host is configured for OTel.