Azure Monitor Opentelemetry Distro-Clientbibliothek für Python – Version 1.1.1
Die Azure Monitor-Distribution von Opentelemetry Python stellt mehrere installierbare Komponenten für eine Opentelemetry Azure Monitor-Überwachungslösung bereit. Sie können Ihre Python-Anwendungen instrumentieren, um Telemetriedaten über die Azure Monitor-Exporteure zu erfassen und an Azure Monitor zu melden.
Diese Distribution installiert automatisch die folgenden Bibliotheken:
- Azure Monitor OpenTelemetry-Exporteure
- Eine Teilmenge der OpenTelemetry-Instrumentierungen , die wie unten aufgeführt offiziell unterstützt werden.
Offiziell unterstützte Instrumentierung
OpenTelemetry-Instrumentierungen ermöglichen die automatische Sammlung von Anforderungen, die von zugrunde liegenden instrumentierten Bibliotheken gesendet werden. Im Folgenden finden Sie eine Liste der OpenTelemetry-Instrumentierungen, die mit der Azure Monitor-Distribution gebündelt sind. Diese Instrumentierungen sind standardmäßig aktiviert. Informationen zum Deaktivieren dieser Instrumentierung finden Sie im Abschnitt Nutzung unten.
Instrumentierung | Name der unterstützten Bibliothek | Unterstützte Versionen |
---|---|---|
Azure Core Tracing OpenTelemetry | azure_sdk |
|
Django-Instrumentierung von OpenTelemetry | Django | Link. |
FastApi-Instrumentierung von OpenTelemetry | fastapi | Link. |
OpenTelemetry Flask Instrumentation | flask | Link. |
OpenTelemetry Psycopg2 Instrumentierung | psycopg2 | Link. |
Instrumentierung von OpenTelemetry-Anforderungen | requests | Link. |
OpenTelemetry UrlLib Instrumentation | urllib | All |
OpenTelemetry UrlLib3 Instrumentation | urllib3 | Link. |
Wenn Sie Unterstützung für eine andere OpenTelemetry-Instrumentierung hinzufügen möchten, senden Sie eine Featureanforderung. In der Zwischenzeit können Sie die OpenTelemetry-Instrumentierung manuell über die eigenen APIs (d. h. instrument()
) in Ihrem Code verwenden. Ein Beispiel finden Sie hier.
Wichtige Begriffe
Dieses Paket bündelt eine Reihe von OpenTelemetry- und Azure Monitor-Komponenten, um die Sammlung und das Senden von Telemetriedaten an Azure Monitor zu ermöglichen. Verwenden Sie für MANUELLE Instrumentierung die configure_azure_monitor
-Funktion. DIE AUTOMATISCHE Instrumentierung wird noch nicht unterstützt.
Die OpenTelemetry-Exporteure von Azure Monitor sind die Standard Komponenten, um dies zu erreichen. Sie können die Exporteure und ihre APIs direkt über dieses Paket verwenden. Lesen Sie die Dokumentation des Exporters, um zu verstehen, wie OpenTelemetry- und Azure Monitor-Komponenten beim Aktivieren der Telemetriesammlung und des Exports funktionieren.
Derzeit befinden sich alle in OpenTelemetry verfügbaren Instrumentierungen in einem Betazustand, was bedeutet, dass sie nicht stabil sind und in Zukunft möglicherweise Breaking Changes aufweisen. Es werden Anstrengungen unternommen, diese in einen stabileren Zustand zu bringen.
Erste Schritte
Voraussetzungen
Um dieses Paket verwenden zu können, benötigen Sie Folgendes:
- Azure-Abonnement (Erstellen Sie ein kostenloses Konto.)
- Azure Monitor: Verwenden von Application Insights
- Opentelemetry SDK – Opentelemetry SDK für Python
- Python 3.7 oder höher: Installieren von Python
Installieren des Pakets
Installieren Sie die Azure Monitor Opentelemetry-Distro mit pip:
pip install azure-monitor-opentelemetry
Verbrauch
Sie können die configure_azure_monitor
Instrumentierung für Ihre App in Azure Monitor einrichten. configure_azure_monitor
unterstützt die folgenden optionalen Argumente. Alle übergebenen Parameter haben Vorrang vor allen verwandten Umgebungsvariablen.
Parameter | BESCHREIBUNG | Umgebungsvariable |
---|---|---|
connection_string |
Der Verbindungszeichenfolge für Ihre Application Insights-Ressource. Die Verbindungszeichenfolge wird automatisch aus der Umgebungsvariable APPLICATIONINSIGHTS_CONNECTION_STRING aufgefüllt, wenn sie nicht explizit übergeben wird. |
APPLICATIONINSIGHTS_CONNECTION_STRING |
logger_name |
Der Name der Python-Protokollierung , unter der Telemetriedaten erfasst werden. | N/A |
instrumentation_options |
Ein geschachteltes Wörterbuch, das bestimmt, welche Instrumentierungen aktiviert oder deaktiviert werden sollen. Instrumentierungen werden durch ihre Bibliotheksnamen bezeichnet. Deaktiviert beispielsweise Die Azure Core-Ablaufverfolgung und die Flask-Instrumentierung, {"azure_sdk": {"enabled": False}, "flask": {"enabled": False}, "django": {"enabled": True}} aber Django und die anderen Standardinstrumentierungen sind aktiviert. Die OTEL_PYTHON_DISABLED_INSTRUMENTATIONS unten erläuterte Umgebungsvariable kann auch zum Deaktivieren von Instrumentierungen verwendet werden. |
N/A |
Sie können mit OpenTelemetry-Umgebungsvariablen weiter konfigurieren, z. B.: | Umgebungsvariable | Beschreibung | |-------------|----------------------| | OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES | Gibt die OpenTelemetry-Ressource an, die Ihrer Anwendung zugeordnet ist. | | OTEL_LOGS_EXPORTER
| Wenn auf None
festgelegt ist, deaktiviert die Sammlung und den Export von Protokollierungtelemetriedaten. | | OTEL_METRICS_EXPORTER
| Wenn auf None
festgelegt ist, deaktiviert die Sammlung und den Export von Metriktelemetriedaten. | | OTEL_TRACES_EXPORTER
| Wenn auf None
festgelegt ist, deaktiviert die Sammlung und den Export von Telemetriedaten der verteilten Ablaufverfolgung. | | OTEL_BLRP_SCHEDULE_DELAY
| Gibt das Protokollierungsexportintervall in Millisekunden an. Diese wird standardmäßig auf 5000 festgelegt. | | OTEL_BSP_SCHEDULE_DELAY
| Gibt das Exportintervall für verteilte Ablaufverfolgungen in Millisekunden an. Diese wird standardmäßig auf 5000 festgelegt. | | OTEL_TRACES_SAMPLER_ARG
| Gibt das Verhältnis der zu beprobenden Telemetriedaten der verteilten Ablaufverfolgung an. Akzeptierte Werte liegen im Bereich [0,1]. Standardmäßig wird 1.0 verwendet, was bedeutet, dass keine Telemetriedaten abgetastet werden. | | OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
| Gibt an, welche der unterstützten Instrumentierungen deaktiviert werden sollen. Deaktivierte Instrumentierungen werden nicht als Teil von configure_azure_monitor
instrumentiert. Sie können jedoch weiterhin manuell mit instrument()
direkt instrumentiert werden. Akzeptiert eine durch Trennzeichen getrennte Liste von Kleinbuchstaben für Bibliotheksnamen. Legen Sie beispielsweise auf fest "psycopg2,fastapi"
, um die Instrumentierung Psycopg2 und FastAPI zu deaktivieren. Standardmäßig wird eine leere Liste verwendet, wodurch alle unterstützten Instrumentierungen aktiviert werden. | | OTEL_EXPERIMENTAL_RESOURCE_DETECTORS
| Eine experimentelle OpenTelemetry-Umgebungsvariable, die verwendet wird, um Ressourcendetektoren anzugeben, die zum Generieren von Ressourcenattributen verwendet werden sollen. Dies ist ein experimentelles Feature, und der Name dieser Variablen und ihr Verhalten können sich nicht abwärtskompatibel ändern. Standardmäßig wird "azure_app_service,azure_vm" verwendet, um die Azure-Ressourcendetektoren für Azure App Service und azure-VM zu aktivieren. Um bestimmte Ressourcendetektoren hinzuzufügen oder zu entfernen, legen Sie die Umgebungsvariable entsprechend fest. Weitere Informationen finden Sie in der Dokumentation zum OpenTelemetry-Python-Ressourcendetektor . |
Azure monitor OpenTelemetry Exporterkonfigurationen
Sie können Azure monitor OpenTelemetry-Exporterkonfigurationsparameter direkt an configure_azure_monitor
übergeben. Weitere Informationen finden Sie hier unter zusätzliche Konfiguration im Zusammenhang mit dem Export.
...
configure_azure_monitor(
connection_string="<your-connection-string>",
disable_offline_storage=True,
)
...
Beispiele
Hier finden Sie Beispiele, um die Verwendung der oben genannten Konfigurationsoptionen zu veranschaulichen.
Überwachung in Azure Functions
Korrelation der Ablaufverfolgung
Die Nachverfolgen eingehender Anforderungen, die an Ihre in Azure Functions gehostete Python-Anwendung eingehen, werden nicht automatisch mit den Telemetriedaten korreliert, die darin nachverfolgt werden. Sie können die Ablaufverfolgungskorrelation manuell erreichen, indem Sie die TraceContext
wie unten gezeigt direkt extrahieren:
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
Protokollierungsprobleme
Der Azure Functions Worker selbst sendet Die Telemetriedaten der Protokollierung selbst, ohne das Azure Monitor SDK zu verwenden (der Aufruf von configure_azure_monitor()
). Dies führt möglicherweise zu doppelten Telemetrieeinträgen beim Senden von Protokolltelemetriedaten. Unsere Empfehlung an Kunden besteht darin, nur das SDK zu verwenden, da es viel umfangreichere Telemetriedaten und Features ermöglicht als die integrierte, die vom Azure Functions Worker bereitgestellt wird. Sie können die Azure Functions Telemetrieprotokollierung deaktivieren, indem Sie die Liste der Handler Ihrer Protokollierung löschen.
...
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
...
Achten Sie darauf, dass Sie die obigen Aufrufe aufrufen, BEVOR eine Protokollierung oder der Aufruf von configure_azure_monitor()
eingerichtet ist.
Sie können die Protokollierung auch über Azure Functions Konfiguration deaktivieren.
v2.x+
...
{
"logging": {
...
"logLevel": {
"default": "None",
...
}
}
}
...
v1.x
...
{
"logger": {
"categoryFilter": {
"defaultLevel": "None",
...
}
}
}
...
Problembehandlung
Der Exporteur löst in Azure Core definierte Ausnahmen aus.
Nächste Schritte
Weitere Informationen finden Sie in der Dokumentation .
Mitwirken
Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Ausführliche Informationen finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull Request (PR) übermitteln, überprüft ein CLA-Bot automatisch, ob Sie eine Lizenzvereinbarung bereitstellen und den PR entsprechend ergänzen müssen (z.B. mit einer Bezeichnung oder einem Kommentar). Führen Sie einfach die Anweisungen des Bots aus. Sie müssen dies nur einmal für alle Repositorys ausführen, die unsere CLA verwenden.
Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.
Zusätzliche Dokumentation
Azure SDK for Python