Felsöka Problem med OpenTelemetry i Python

Den här artikeln beskriver hur du felsöker Problem med OpenTelemetry i Python.

Checklista för felsökning

Steg 1: Aktivera diagnostikloggning

Microsoft Azure Monitor Exporter använder Pythons standardloggningsbibliotek för sin interna loggning. OpenTelemetry API och Azure Monitor Exporter-loggar tilldelas en allvarlighetsgrad på WARNING eller ERROR för oregelbunden aktivitet. Allvarlighetsgraden INFO används för regelbunden eller lyckad aktivitet.

Som standard anger Python-loggningsbiblioteket allvarlighetsgraden till WARNING. Därför måste du ändra allvarlighetsgraden för att se loggar under den här allvarlighetsinställningen. Följande exempelkod visar hur du matar ut loggar med alla allvarlighetsgradsnivåer till konsolen och en fil:

...
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)
...

Steg 2: Testa anslutningen mellan programvärden och inmatningstjänsten

Application Insights SDK:er och agenter skickar telemetri för att matas in som REST-anrop vid våra inmatningsslutpunkter. Om du vill testa anslutningen från webbservern eller programvärddatorn till inmatningstjänstens slutpunkter använder du cURL-kommandon eller råa REST-begäranden från PowerShell. Mer information finns i Felsöka programtelemetri som saknas i Azure Monitor Application Insights.

Steg 3: Undvik duplicerad telemetri

Duplicerad telemetri orsakas ofta om du skapar flera instanser av processorer eller exportörer. Kontrollera att du bara kör en exportör och processor i taget för varje telemetripelare (loggar, mått och distribuerad spårning).

I följande avsnitt beskrivs scenarier som kan orsaka duplicerad telemetri.

Duplicera spårningsloggar i Azure Functions

Om du ser ett par poster för varje spårningslogg i Application Insights har du förmodligen aktiverat följande typer av loggningsinstrumentation:

  • Den interna loggningsinstrumentationen i Azure Functions
  • Loggningsinstrumentationen azure-monitor-opentelemetry i fördelningen

För att förhindra duplicering kan du inaktivera distributionens loggning, men lämna den inbyggda loggningsinstrumentationen i Azure Functions aktiverad. Det gör du genom OTEL_LOGS_EXPORTER att ange miljövariabeln till None.

Duplicera telemetri i "Always On" Azure Functions

Om inställningen AlwaysOn i Azure Functions är inställd på På Azure Functions att vissa processer körs i bakgrunden när varje körning har slutförts. Anta till exempel att du har en femminuters timerfunktion som anropar configure_azure_monitor varje gång. Efter 20 minuter kanske du har fyra måttexportörer som körs samtidigt. Den här situationen kan vara källan till din duplicerade måtttelemetri.

I det här fallet ställer du antingen in inställningen AlwaysOn påAv eller provar att stänga av providrar mellan varje configure_azure_monitor anrop manuellt. Om du vill stänga av varje provider kör du avstängningsanrop för varje aktuell mätare, spårningsleverantör och loggningsprovider, enligt följande kod:

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

Azure-arbetsböcker och Jupyter Notebooks

Azure-arbetsböcker och Jupyter Notebooks kan hålla exportprocesser igång i bakgrunden. Om du vill förhindra duplicerad telemetri rensar du cachen innan du gör fler anrop till configure_azure_monitor.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.