Freigeben über


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 MonitorApplication InsightsOpenTelemetry-Distribution zu migrieren.

Warnung

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.

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

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.

Problembehandlung

Funktioniert etwas nicht? Sehen Sie sich die Problembehandlungsseite für ASP.NET Core an.

Unterstützung

Wählen Sie eine Registerkarte für die Sprache Ihrer Wahl aus, um Supportoptionen zu ermitteln.

OpenTelemetry-Feedback

So können Sie Feedback geben