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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för