Behandeln von OpenTelemetry-Problemen in Python

In diesem Artikel wird erläutert, wie Sie OpenTelemetry-Probleme in Python behandeln.

Checkliste zur Problembehandlung

Schritt 1: Aktivieren der Diagnoseprotokollierung

Microsoft Azure Monitor Exporter verwendet die Python-Standardprotokollierungsbibliothek für die interne Protokollierung. OpenTelemetry-API- und Azure Monitor Exporter-Protokolle werden dem Schweregrad WARNING oder ERROR für unregelmäßige Aktivitäten zugewiesen. Der INFO Schweregrad wird für reguläre oder erfolgreiche Aktivitäten verwendet.

Standardmäßig legt die Python-Protokollierungsbibliothek den Schweregrad auf fest WARNING. Daher müssen Sie den Schweregrad ändern, damit Protokolle unter dieser Einstellung angezeigt werden. Der folgende Beispielcode zeigt, wie Protokolle aller Schweregrade an die Konsole und eine Datei ausgegeben werden:

...
import logging

logging.basicConfig(format = "%(asctime)s:%(levelname)s:%(message)s", level = logging.DEBUG)

logger = logging.getLogger(__name__)
file = logging.FileHandler("example.log")
stream = logging.StreamHandler()
logger.addHandler(file)
logger.addHandler(stream)
...

Schritt 2: Testen der Konnektivität zwischen Ihrem Anwendungshost und dem Erfassungsdienst

Application Insights-SDKs und -Agents senden Telemetriedaten, um als REST-Aufrufe an unseren Erfassungsendpunkten erfasst zu werden. Um die Konnektivität von Ihrem Webserver oder Anwendungshostcomputer mit den Erfassungsdienstendpunkten zu testen, verwenden Sie cURL Befehle oder unformatierte REST-Anforderungen von PowerShell. Weitere Informationen finden Sie unter Problembehandlung bei fehlenden Anwendungstelemetriedaten in Azure Monitor Application Insights.

Schritt 3: Vermeiden doppelter Telemetriedaten

Doppelte Telemetriedaten werden häufig verursacht, wenn Sie mehrere Instanzen von Prozessoren oder Exportern erstellen. Stellen Sie sicher, dass Sie jeweils nur einen Exporter und Prozessor für jede Telemetriesäule (Protokolle, Metriken und verteilte Ablaufverfolgung) ausführen.

In den folgenden Abschnitten werden Szenarien beschrieben, die zu doppelten Telemetriedaten führen können.

Doppelte Ablaufverfolgungsprotokolle in Azure Functions

Wenn für jedes Ablaufverfolgungsprotokoll in Application Insights ein Paar von Einträgen angezeigt wird, haben Sie wahrscheinlich die folgenden Arten der Protokollierungsinstrumentation aktiviert:

  • Die systemeigene Protokollierungsinstrumentation in Azure Functions
  • Die azure-monitor-opentelemetry Protokollierungsinstrumentation innerhalb der Verteilung

Um Duplizierung zu vermeiden, können Sie die Protokollierung der Verteilung deaktivieren, aber die native Protokollierungsinstrumentation in Azure Functions aktiviert lassen. Legen Sie dazu die Umgebungsvariable OTEL_LOGS_EXPORTER auf fest None.

Doppelte Telemetriedaten in "Always On"-Azure Functions

Wenn die einstellung Always On in Azure Functions auf Ein festgelegt ist, Azure Functions einige Prozesse im Hintergrund laufen lassen, nachdem jede Ausführung abgeschlossen ist. Nehmen wir für instance an, dass Sie über eine Fünf-Minuten-Timerfunktion verfügen, die jedes Mal aufruftconfigure_azure_monitor. Nach 20 Minuten verfügen Sie dann möglicherweise über vier Metrikexporteure, die gleichzeitig ausgeführt werden. Diese Situation kann die Quelle Ihrer doppelten Metriktelemetrie sein.

Legen Sie in diesem Fall entweder die Always On Einstellung auf Aus fest, oder versuchen Sie, die Anbieter zwischen jedem configure_azure_monitor Anruf manuell herunterzufahren. Um jeden Anbieter herunterzufahren, führen Sie Herunterfahren-Aufrufe für jeden aktuellen Verbrauchseinheits-, Ablaufverfolgungs- und Protokollierungsanbieter aus, wie im folgenden Code gezeigt:

get_meter_provider().shutdown()
get_tracer_provider().shutdown()
get_logger_provider().shutdown()

Azure-Arbeitsmappen und Jupyter Notebooks

Azure-Arbeitsmappen und Jupyter Notebooks können Exporterprozesse im Hintergrund ausführen. Um doppelte Telemetriedaten zu verhindern, löschen Sie den Cache, bevor Sie weitere Aufrufe an ausführen configure_azure_monitor.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.