Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This article describes how to enable and configure OpenTelemetry-based data collection within Azure Monitor Application Insights. The Azure Monitor OpenTelemetry Distro:
- Provides an OpenTelemetry distribution which includes support for features specific to Azure Monitor.
- Enables automatic telemetry by including OpenTelemetry instrumentation libraries for collecting traces, metrics, logs, and exceptions.
- Allows collecting custom telemetry.
- Supports Live Metrics to monitor and collect more telemetry from live, in-production web applications.
For more information about the advantages of using the Azure Monitor OpenTelemetry Distro, see Why should I use the Azure Monitor OpenTelemetry Distro.
To learn more about collecting data using OpenTelemetry, check out Data Collection Basics or the OpenTelemetry FAQ.
OpenTelemetry offerings are available for .NET, Node.js, Python, and Java applications. For a feature-by-feature release status, see the FAQ.
Follow the steps in this section to instrument your application with OpenTelemetry. Select a tab for langauge-specific instructions.
Note
.NET covers multiple scenarios, including classic ASP.NET, console apps, Windows Forms (WinForms), and more.
- Azure subscription: Create an Azure subscription for trial
- Application Insights resource: Create an Application Insights resource
- Python Application using Python 3.8+
Tip
If you're migrating from OpenCensus, see our migration documentation.
Install the latest azure-monitor-opentelemetry PyPI package:
pip install azure-monitor-opentelemetry
import logging
# Import the `configure_azure_monitor()` function from the
# `azure.monitor.opentelemetry` package.
from azure.monitor.opentelemetry import configure_azure_monitor
# Configure OpenTelemetry to use Azure Monitor with the
# APPLICATIONINSIGHTS_CONNECTION_STRING environment variable.
configure_azure_monitor(
logger_name="<your_logger_namespace>", # Set the namespace for the logger in which you would like to collect telemetry for if you are collecting logging telemetry. This is imperative so you do not collect logging telemetry from the SDK itself.
)
logger = logging.getLogger("<your_logger_namespace>") # Logging telemetry will be collected from logging calls made with this logger and all of it's children loggers.
The connection string is unique and specifies where the Azure Monitor OpenTelemetry Distro sends the telemetry it collects.
Tip
If you don't already have an Application Insights resource, create one following this guide. We recommend you create a new resource rather than using an existing one.
To copy the connection string:
- Go to the Overview pane of your Application Insights resource.
- Find your connection string.
- Hover over the connection string and select the Copy to clipboard icon.
To paste your connection string, select from the following options:
Important
We recommend setting the connection string through code only in local development and test environments.
For production, use an environment variable or configuration file (Java only).
Set via environment variable - recommended
Replace
<Your connection string>
in the following command with your connection string.APPLICATIONINSIGHTS_CONNECTION_STRING=<Your connection string>
Set via configuration file - Java only
Create a configuration file named
applicationinsights.json
, and place it in the same directory asapplicationinsights-agent-3.7.1.jar
with the following content:{ "connectionString": "<Your connection string>" }
Replace
<Your connection string>
in the preceding JSON with your unique connection string.Set via code - ASP.NET Core, Node.js, and Python only
See connection string configuration for an example of setting connection string via code.
Note
If you set the connection string in multiple places, the environment variable will be prioritized in the following order:
- Code
- Environment variable
- Configuration file
Run your application, then open Application Insights in the Azure portal. It might take a few minutes for data to show up.
Application Insights is now enabled for your application. The following steps are optional and allow for further customization.
Important
If you have two or more services that emit telemetry to the same Application Insights resource, you're required to set Cloud Role Names to represent them properly on the Application Map.
As part of using Application Insights instrumentation, we collect and send diagnostic data to Microsoft. This data helps us run and improve Application Insights. To learn more, see Statsbeat in Azure Application Insights.
Azure Monitor OpenTelemetry sample applications are available for all supported languages:
- ASP.NET Core sample app
- NET sample app
- Java sample apps
- Java GraalVM native sample apps
- Node.js sample app
- Python sample apps
- See Add and modify Azure Monitor OpenTelemetry for details on adding and modifying Azure Monitor OpenTelemetry.
- Review the source code and extra documentation in the Azure Monitor Distro GitHub repository.
- See extra samples and use cases in Azure Monitor Distro samples.
- Review the changelog on GitHub.
- Install the PyPI package, check for updates, or view release notes on the Azure Monitor Distro PyPI Package page.
- Become more familiar with Azure Monitor Application Insights and OpenTelemetry in the Azure Monitor Example Application.
- Learn more about OpenTelemetry and its community in the OpenTelemetry Python GitHub repository.
- See available OpenTelemetry instrumentations and components in the OpenTelemetry Contributor Python GitHub repository.
- Enable usage experiences by enabling web or browser user monitoring.
- To review frequently asked questions, troubleshooting steps, support options, or to provide OpenTelemetry feedback, see OpenTelemetry help, support, and feedback for Azure Monitor Application Insights.