Migrieren vom OpenCensus Python-SDK und dem Azure Monitor OpenCensus-Exportprogramm für Python zur OpenTelemetry Python-Distribution von Azure Monitor
Hinweis
Das OpenCensus Python-SDK ist veraltet, aber Microsoft unterstützt es bis zur Einstellung am 30. September 2024. Wir empfehlen jetzt das auf OpenTelemetry basierende Python-Angebot und bieten Migrationsanleitungen.
Führen Sie die folgenden Schritte aus, um Python-Anwendungen zur Azure Monitor Application Insights OpenTelemetry-Distribution zu migrieren.
Warnung
- Der OpenCensus-Blog „Migrieren zu OpenTelemetry“ gilt nicht für Azure Monitor-Benutzer.
- Der OpenTelemetry OpenCensus-Shim wird von Microsoft nicht empfohlen oder unterstützt.
- Im Folgenden wird der einzige Migrationsplan für Azure Monitor-Kunden beschrieben.
Schritt 1: Deinstallieren von OpenCensus-Bibliotheken
Deinstallieren Sie alle Bibliotheken im Zusammenhang mit OpenCensus, einschließlich aller Pypi-Pakete, die mit opencensus-*
beginnen.
pip freeze | grep opencensus | xargs pip uninstall -y
Schritt 2: Entfernen von OpenCensus aus Ihrem Code
Entfernen Sie alle Instanzen des OpenCensus-SDK und des Azure Monitor OpenCensus-Exportprogramms aus Ihrem Code.
Suchen Sie mit nach Importanweisungen, die mit opencensus
beginnen, um alle Integrationen, Exportprogramme und Instanzen von OpenCensus-API/SDK zu finden, die entfernt werden müssen.
Im Folgenden finden Sie Beispiele für Importanweisungen, die entfernt werden müssen.
from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
from opencensus.ext.azure.log_exporter import AzureLogHandler
Schritt 3: Machen Sie sich mit OpenTelemetry Python-APIs/SDKs vertraut
Die folgende Dokumentation vermittelt erforderliche Kenntnisse der OpenTelemetry Python-APIs/SDKs.
- OpenTelemetry Python-Dokumentation
- Dokumentation der Azure Monitor-Distribution zu Konfiguration und Telemetrie
Hinweis
OpenTelemetry Python und OpenCensus Python verfügen über unterschiedliche API-Oberflächen, Funktionalitäten zur automatischen Sammlung und Anweisungen für das Onboarding.
Schritt 4: Einrichten der Azure Monitor OpenTelemetry-Distribution
Folgen Sie der Seite Erste Schritte, um das Onboarding auf die Azure Monitor OpenTelemetry-Distribution durchzuführen.
Änderungen und Einschränkungen
Die folgenden Änderungen und Einschränkungen können bei der Migration von OpenCensus zu OpenTelemetry auftreten.
Python < 3.7-Support
Die Python-basierten Überwachungslösungen von OpenTelemetry unterstützen nur Python 3.7 und höher, ausgenommen die zuvor unterstützten Python-Versionen 2.7, 3.4, 3.5 und 3.6 von OpenCensus. Wir empfehlen ein Upgrade für Benutzer mit den älteren Versionen von Python, da diese Versionen zum Zeitpunkt des Schreibens dieses Dokuments bereits das Ende der Lebensdauer erreicht haben. Benutzer, die bewusst auf ein Upgrade verzichten, können die OpenTelemetry-Lösungen weiter verwenden, müssen aber mit unerwartetem oder fehlerhaftem Verhalten rechnen, das nicht unterstützt wird. In jedem Fall ist die letzte unterstützte Version von opencensus-ext-azure immer vorhanden und funktioniert weiterhin für diese Versionen, aber es werden keine neuen Releases für dieses Projekt erstellt.
Konfigurationen
OpenCensus Python hat einige Optionen zur Konfiguration im Zusammenhang mit der Sammlung und dem Export von Telemetriedaten bereitgestellt. Sie erreichen dieselben Konfigurationen und mehr, wenn Sie die OpenTelemetry Python-APIs und das SDK verwenden. Die OpenTelemetry Python-Distribution von Azure Monitor ist eher ein zentraler Ort für die häufigsten Überwachungsanforderungen für Ihre Python-Anwendungen. Da die Distribution die OpenTelemetry-APIs/SDK kapselt, werden einige Konfigurationen für ungewöhnlichere Anwendungsfälle derzeit möglicherweise für die Distribution nicht unterstützt. Stattdessen können Sie sich für das Onboarding auf das OpenTelemetry-Exportprogramm von Azure Monitor entscheiden, das zusammen mit den OpenTelemetry-APIs/SDKs In der Lage sein sollte, Ihre Überwachungsanforderungen zu erfüllen. Einige dieser Konfigurationen enthalten:
- Benutzerdefinierte Weitergabeprogramme
- Benutzerdefinierte Stichprobensammler
- Hinzufügen zusätzlicher Leser für Spannen/Protokollprozessoren/Metriken
Kohäsion mit Azure Functions
Um verteilte Ablaufverfolgungsfunktionen für Python-Anwendungen bereitzustellen, die andere Python-Anwendungen innerhalb einer Azure-Funktion aufrufen, wurde das Paket opencensus-extension-azure-functions bereitgestellt, um einen verbundenen verteilten Graph zu ermöglichen.
Derzeit unterstützen die OpenTelemetry-Lösungen für Azure Monitor dieses Szenario nicht. Als Problemumgehung können Sie den Ablaufverfolgungskontext in Ihrer Azure-Funktionsanwendung manuell weitergeben, wie im folgenden Beispiel gezeigt.
from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
TraceContextTextMapPropagator
# Context parameter is provided for the body of the function
def main(req, context):
functions_current_context = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate
}
parent_context = TraceContextTextMapPropagator().extract(
carrier=functions_current_context
)
token = attach(parent_context)
...
# Function logic
...
detach(token)
Erweiterungen und Exportprogramme
Das OpenCensus-SDK hat Möglichkeiten zum Sammeln und Exportieren von Telemetriedaten über OpenCensus-Integrationen bzw. -Exportprogramme angeboten. In OpenTelemetry werden Integrationen jetzt als Instrumentierungen bezeichnet, während Exportprogramme die gleiche Terminologie beibehalten haben. Die OpenTelemetry Python-Instrumentierungen und -Exportprogramme sind eine Obermenge dessen, was in OpenCensus zur Verfügung gestellt wurde, sodass OpenTelemetry-Bibliotheken in Bezug auf Bibliotheksabdeckung und Funktionalität ein direktes Upgrade sind. Die Azure Monitor OpenTelemetry-Distribution enthält bereits einige der beliebten OpenTelemetry Python-Instrumentierungen sofort einsatzbereit, sodass kein zusätzlicher Code erforderlich ist. Microsoft unterstützt diese Instrumentierungen vollständig.
Die anderen OpenTelemetry Python-Instrumentierungen, die nicht in dieser Liste enthalten sind, können von Benutzern weiterhin manuell instrumentiert werden. Es ist jedoch wichtig zu beachten, dass Stabilität und Verhalten in diesen Fällen nicht garantiert oder unterstützt werden. Verwenden Sie diese daher nach eigenem Ermessen.
Wenn Sie eine Community-Instrumentierungsbibliothek für die Aufnahme in unserer Distribution vorschlagen möchten, posten Sie Ihre Idee in unserem Feedbackcommunity, oder geben Sie dort eine Stimme ab. Für Exportprogramme wird die Azure Monitor OpenTelemetry-Distribution mit dem Azure Monitor OpenTelemetry-Exportprogramm gebündelt. Wenn Sie auch andere Exportprogramme verwenden möchten, können Sie diese mit der Distribution verwenden, wie in diesem Beispiel.
TelemetryProcessors
OpenCensus Python-Telemetrieprozessoren sind ein leistungsstarker Mechanismus, mit dem Benutzer ihre Telemetriedaten ändern können, bevor sie an das Exportprogramm gesendet werden. Es gibt kein Konzept von TelemetryProcessors in der OpenTelemetry-Welt, aber es gibt APIs und Klassen, die Sie verwenden können, um dasselbe Verhalten zu replizieren.
Festlegen des Cloudrollennamens und der Cloudrolleninstanz
Befolgen Sie die hier bereitgestellten Anweisungen zum Festlegen des Cloudrollennamens und der Cloudrolleninstanz für Ihre Telemetriedaten. Die OpenTelemetry-Distribution von Azure Monitor ruft die Werte automatisch aus den Umgebungsvariablen ab und füllt die entsprechenden Felder aus.
Ändern von Spannen mit SpanProcessors
Bald verfügbar.
Ändern von Metriken mit Ansichten
Bald verfügbar.
Leistungsindikatoren
Das OpenCensus Python-Exportprogramm von Azure Monitor sammelte automatisch system- und leistungsbezogene Metriken, die als Leistungsindikatoren bezeichnet werden. Diese Metriken werden in performanceCounters
in Ihrer Application Insights-Instanz angezeigt. In OpenTelemetry senden wir diese Metriken nicht mehr explizit an performanceCounters
. Metriken im Zusammenhang mit eingehenden/ausgehenden Anforderungen finden Sie unter Standardmetriken. Wenn Sie möchten, dass OpenTelemetry systembezogene Metriken automatisch sammelt, können Sie die experimentelle Instrumentierung für Systemmetriken verwenden, die von der OpenTelemetry Python-Community bereitgestellt wird. Dieses Paket ist experimentell und wird von Microsoft nicht offiziell unterstützt.
Unterstützung
Informationen zum Überprüfen von Problembehandlungsschritten, Supportoptionen oder zum Bereitstellen von OpenTelemetry-Feedback finden Sie unter Problembehandlung, Support und Feedback für Azure Monitor Application Insights.