Azure Monitor OpenTelemetry Distro for Python One-line setup for Application Insights with OpenTelemetry auto-instrumentation. Installation pip install azure-monitor-opentelemetry Environment Variables APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey = xxx ; IngestionEndpoint = https://xxx.in.applicationinsights.azure.com/ Quick Start from azure . monitor . opentelemetry import configure_azure_monitor
One-line setup - reads connection string from environment
configure_azure_monitor ( )
Your application code...
Explicit Configuration from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( connection_string = "InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/" ) With Flask from flask import Flask from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( ) app = Flask ( name ) @app . route ( "/" ) def hello ( ) : return "Hello, World!" if name == "main" : app . run ( ) With Django
settings.py
from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( )
Django settings...
With FastAPI from fastapi import FastAPI from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( ) app = FastAPI ( ) @app . get ( "/" ) async def root ( ) : return { "message" : "Hello World" } Custom Traces from opentelemetry import trace from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( ) tracer = trace . get_tracer ( name ) with tracer . start_as_current_span ( "my-operation" ) as span : span . set_attribute ( "custom.attribute" , "value" )
Do work...
Custom Metrics from opentelemetry import metrics from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( ) meter = metrics . get_meter ( name ) counter = meter . create_counter ( "my_counter" ) counter . add ( 1 , { "dimension" : "value" } ) Custom Logs import logging from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( ) logger = logging . getLogger ( name ) logger . setLevel ( logging . INFO ) logger . info ( "This will appear in Application Insights" ) logger . error ( "Errors are captured too" , exc_info = True ) Sampling from azure . monitor . opentelemetry import configure_azure_monitor
Sample 10% of requests
configure_azure_monitor ( sampling_ratio = 0.1 ) Cloud Role Name Set cloud role name for Application Map: from azure . monitor . opentelemetry import configure_azure_monitor from opentelemetry . sdk . resources import Resource , SERVICE_NAME configure_azure_monitor ( resource = Resource . create ( { SERVICE_NAME : "my-service-name" } ) ) Disable Specific Instrumentations from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( instrumentations = [ "flask" , "requests" ]
Only enable these
) Enable Live Metrics from azure . monitor . opentelemetry import configure_azure_monitor configure_azure_monitor ( enable_live_metrics = True ) Azure AD Authentication from azure . monitor . opentelemetry import configure_azure_monitor from azure . identity import DefaultAzureCredential configure_azure_monitor ( credential = DefaultAzureCredential ( ) ) Auto-Instrumentations Included Library Telemetry Type Flask Traces Django Traces FastAPI Traces Requests Traces urllib3 Traces httpx Traces aiohttp Traces psycopg2 Traces pymysql Traces pymongo Traces redis Traces Configuration Options Parameter Description Default connection_string Application Insights connection string From env var credential Azure credential for AAD auth None sampling_ratio Sampling rate (0.0 to 1.0) 1.0 resource OpenTelemetry Resource Auto-detected instrumentations List of instrumentations to enable All enable_live_metrics Enable Live Metrics stream False Best Practices Call configure_azure_monitor() early — Before importing instrumented libraries Use environment variables for connection string in production Set cloud role name for multi-service applications Enable sampling in high-traffic applications Use structured logging for better log analytics queries Add custom attributes to spans for better debugging Use AAD authentication for production workloads When to Use This skill is applicable to execute the workflow or actions described in the overview.