Option
HeimHeim Skill DevOps und CI/CD azure-monitor-opentelemetry-py

azure-monitor-opentelemetry-py

microsoft/skills microsoft/skills

Konfiguriert Azure Monitor Application Insights mit OpenTelemetry-Autoinstrumentierung für Python-Anwendungen in einer Zeile.

...Alle erweitern
0
Zeit aktualisiert 15. September 2026

Azure Monitor OpenTelemetry Distro für Python

Einzeilige Einrichtung für Application Insights mit automatischer OpenTelemetry-Instrumentierung.

Installation

pip install azure-monitor-opentelemetry

Umgebungsvariablen

APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/  # Erforderlich für alle Authentifizierungsmethoden
AZURE_TOKEN_CREDENTIALS=prod # Nur erforderlich, wenn DefaultAzureCredential in der Produktion verwendet wird

🔑 Authentifizierung und Lebenszyklus: Dieses Distro ist standardmäßig mit einer Verbindungszeichenfolge konfiguriert, jedoch wird für AAD-authentifizierte Datenerfassung (wo unterstützt) DefaultAzureCredential über den Parameter credential= bevorzugt — siehe Abschnitt Azure AD-Authentifizierung. Alle Azure SDK-Clients, die Sie neben dem Exporteur erstellen, sollten in with-/async with-Blöcken (und asynchrone Anmeldeinformationen aus azure.identity.aio entsprechend) gekapselt werden.

Schnellstart

from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry import configure_azure_monitor

# Die Verbindungszeichenfolge identifiziert die App Insights-Ressource (wird aus der Umgebungsvariable APPLICATIONINSIGHTS_CONNECTION_STRING gelesen).
# DefaultAzureCredential authentifiziert die Datenerfassung über Microsoft Entra ID (bevorzugt gegenüber der Authentifizierung nur mit Instrumentierungsschlüssel).
configure_azure_monitor(
    credential=DefaultAzureCredential(),
)

# Ihr Anwendungscode...

Explizite Konfiguration

from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry import configure_azure_monitor

# Liest APPLICATIONINSIGHTS_CONNECTION_STRING aus der Umgebung, um die Ressource zu identifizieren;
# DefaultAzureCredential authentifiziert die Datenerfassung über Microsoft Entra ID.
configure_azure_monitor(
    credential=DefaultAzureCredential(),
)

Mit 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()

Mit Django

# settings.py
from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor()

# Django-Einstellungen...

Mit 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"}

Benutzerdefinierte Ablaufverfolgungen (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")
    # Arbeit ausführen...

Benutzerdefinierte Metriken

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"})

Benutzerdefinierte Protokolle (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)

Stichproben (Sampling)

from azure.monitor.opentelemetry import configure_azure_monitor

# 10 % der Anfragen stichprobenartig prüfen
configure_azure_monitor(
    sampling_ratio=0.1
)

Name der Cloud-Rolle

Legen Sie den Namen der Cloud-Rolle für die Anwendungskarte fest:

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"})
)

Deaktivieren spezifischer Instrumentierungen

from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor(
    instrumentations=["flask", "requests"]  # Nur diese aktivieren
)

Live-Metriken aktivieren

from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor(
    enable_live_metrics=True
)

Azure AD-Authentifizierung

from azure.monitor.opentelemetry import configure_azure_monitor
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential

# Lokale Entwicklung: DefaultAzureCredential. Produktion: AZURE_TOKEN_CREDENTIALS=prod oder AZURE_TOKEN_CREDENTIALS=<specific_credential> festlegen
credential = DefaultAzureCredential(require_envvar=True)
# Oder verwenden Sie in der Produktion direkt ein spezifisches Anmeldeobjekt:
# Siehe https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

configure_azure_monitor(
    credential=credential
)
</specific_credential>

Inbegriffene automatische Instrumentierungen

BibliothekTelemetrieart
FlaskAblaufverfolgungen (Traces)
DjangoAblaufverfolgungen (Traces)
FastAPIAblaufverfolgungen (Traces)
RequestsAblaufverfolgungen (Traces)
urllib3Ablaufverfolgungen (Traces)
httpxAblaufverfolgungen (Traces)
aiohttpAblaufverfolgungen (Traces)
psycopg2Ablaufverfolgungen (Traces)
pymysqlAblaufverfolgungen (Traces)
pymongoAblaufverfolgungen (Traces)
redisAblaufverfolgungen (Traces)

Konfigurationsoptionen

ParameterBeschreibungStandardwert
`connection_string`Verbindungszeichenfolge für Application InsightsAus Umgebungsvariable
`credential`Azure-Anmeldeinformationen für AAD-AuthentifizierungNone
`sampling_ratio`Stichprobenrate (0,0 bis 1,0)1,0
`resource`OpenTelemetry-RessourceAutomatisch erkannt
`instrumentations`Liste der zu aktivierenden InstrumentierungenAlle
`enable_live_metrics`Live-Metriken-Stream aktivierenFalsch

Best Practices

  1. Entscheiden Sie sich für synchron ODER asynchron und bleiben Sie konsistent. Mischen Sie keine synchronen azure.xxx-Clients mit asynchronen azure.xxx.aio-Clients im selben Aufrufpfad. Wählen Sie einen Modus pro Modul.
  2. Flushen und Herunterfahren von Anbietern beim Prozessende. Rufen Sie die Shutdown-/Flush-APIs (z. B. tracer_provider.shutdown(), meter_provider.shutdown(), logger_provider.shutdown()) beim Prozessende auf, um die Telemetrie zu flushen, bevor der Prozess beendet wird.
  3. Rufen Sie configure_azure_monitor() frühzeitig auf — Bevor instrumentierte Bibliotheken importiert werden
  4. Verwenden Sie Umgebungsvariablen für die Verbindungszeichenfolge in der Produktion
  5. Legen Sie den Namen der Cloud-Rolle fest für Anwendungen mit mehreren Diensten
  6. Aktivieren Sie die Stichprobenprüfung in hochfrequenten Anwendungen
  7. Verwenden Sie strukturierte Protokollierung für bessere Abfragen der Protokollanalyse
  8. Fügen Sie benutzerdefinierte Attribute zu Ablaufverfolgungen (Spans) für eine bessere Fehlerbehebung hinzu
  9. Verwenden Sie Microsoft Entra-Authentifizierung für Produktionsarbeitslasten
Auf GitHub ansehen
---
name: azure-monitor-opentelemetry-py
description: Configures Azure Monitor Application Insights with OpenTelemetry auto-instrumentation for Python applications in one line.
license: MIT
---

# Azure Monitor OpenTelemetry Distro for Python

One-line setup for Application Insights with OpenTelemetry auto-instrumentation.

## Installation

```bash
pip install azure-monitor-opentelemetry
```

## Environment Variables

```bash
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/  # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

> **🔑 Auth & lifecycle:** This distro is configured with a connection string by design, but for *AAD-authenticated ingestion* (where supported) prefer `DefaultAzureCredential` via the `credential=` parameter — see the [Azure AD Authentication](#azure-ad-authentication) section. Any Azure SDK clients you create alongside the exporter should be wrapped in `with`/`async with` blocks (and async credentials from `azure.identity.aio` likewise).

## Quick Start

```python
from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry import configure_azure_monitor

# Connection string identifies the App Insights resource (read from APPLICATIONINSIGHTS_CONNECTION_STRING env var).
# DefaultAzureCredential authenticates ingestion via Microsoft Entra ID (preferred over instrumentation-key-only auth).
configure_azure_monitor(
    credential=DefaultAzureCredential(),
)

# Your application code...
```

## Explicit Configuration

```python
from azure.identity import DefaultAzureCredential
from azure.monitor.opentelemetry import configure_azure_monitor

# Reads APPLICATIONINSIGHTS_CONNECTION_STRING from env to identify the resource;
# DefaultAzureCredential authenticates ingestion via Microsoft Entra ID.
configure_azure_monitor(
    credential=DefaultAzureCredential(),
)
```

## With Flask

```python
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

```python
# settings.py
from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor()

# Django settings...
```

## With FastAPI

```python
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

```python
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

```python
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

```python
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

```python
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:

```python
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

```python
from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor(
    instrumentations=["flask", "requests"]  # Only enable these
)
```

## Enable Live Metrics

```python
from azure.monitor.opentelemetry import configure_azure_monitor

configure_azure_monitor(
    enable_live_metrics=True
)
```

## Azure AD Authentication

```python
from azure.monitor.opentelemetry import configure_azure_monitor
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()

configure_azure_monitor(
    credential=credential
)
```

## 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

1. **Pick sync OR async and stay consistent.** Do not mix `azure.xxx` sync clients with `azure.xxx.aio` async clients in the same call path. Choose one mode per module.
2. **Flush and shut down providers at process exit.** Call the shutdown/flush APIs (e.g. `tracer_provider.shutdown()`, `meter_provider.shutdown()`, `logger_provider.shutdown()`) at process exit to flush telemetry before the process terminates.
3. **Call configure_azure_monitor() early** — Before importing instrumented libraries
4. **Use environment variables** for connection string in production
5. **Set cloud role name** for multi-service applications
6. **Enable sampling** in high-traffic applications
7. **Use structured logging** for better log analytics queries
8. **Add custom attributes** to spans for better debugging
9. **Use Microsoft Entra authentication** for production workloads

Alle Dateien

1 Dateien

azure-monitor-opentelemetry-py installieren

Laden Sie die Skill-Dateien herunter und extrahieren Sie diese in Ihr .claude/skills/-Verzeichnis.

ZIP herunterladen

Klonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-monitor-opentelemetry-py # Copy SKILL.md to your .claude/skills/ directory

Kopieren Kopieren
Schnelle Einrichtung: Kopieren Sie den Ordner „Skill“ nach .claude/skills/. Claude erkennt und verwendet den Skill automatisch.
Repository microsoft/skills

Ähnliche Skills

base44-cli
Zeit aktualisiert 29. Juni 2026
klingai-upgrade-migration
Zeit aktualisiert 3. Juli 2026
Railway CLI Management
Zeit aktualisiert 2. Juli 2026
Verification &amp; Quality Assurance
Zeit aktualisiert 29. Juni 2026
OR