Share via


Azure Monitor Opentelemetry Distro-klientbibliotek för Python – version 1.1.1

Azure Monitor-distributionen av Opentelemetry Python innehåller flera installationsbara komponenter som är tillgängliga för en Azure Monitor-övervakningslösning för Opentelemetry. Det gör att du kan instrumentera dina Python-program för att samla in och rapportera telemetri till Azure Monitor via Azure Monitor-exportörerna.

Den här distributionen installerar automatiskt följande bibliotek:

Officiellt stödda instrumentationer

OpenTelemetry-instrumenteringar tillåter automatisk insamling av begäranden som skickas från underliggande instrumenterade bibliotek. Följande är en lista över OpenTelemetry-instrumentationer som ingår i Azure Monitor-distributionen. Dessa instrumenteringar är aktiverade som standard. Se avsnittet Användning nedan för hur du avanmäler dig från dessa instrumenteringar.

Instrumentation Biblioteksnamn som stöds Versioner som stöds
Azure Core Tracing OpenTelemetry azure_sdk
OpenTelemetry Django Instrumentation Django Länk
OpenTelemetry FastApi Instrumentation fastapi Länk
OpenTelemetry Flask Instrumentation Kolven Länk
OpenTelemetry Psycopg2 Instrumentation psycopg2 Länk
OpenTelemetry Requests Instrumentation begäran Länk
OpenTelemetry UrlLib Instrumentation urllib Alla
OpenTelemetry UrlLib3 Instrumentation urllib3 Länk

Om du vill lägga till stöd för en annan OpenTelemetry-instrumentation skickar du en funktionsförfrågan. Under tiden kan du använda OpenTelemetry-instrumentationen manuellt via egna API:er (dvs. instrument()) i koden. Se detta för ett exempel.

Viktiga begrepp

Det här paketet paketerar en serie OpenTelemetry- och Azure Monitor-komponenter för att möjliggöra insamling och sändning av telemetri till Azure Monitor. Använd funktionen för configure_azure_monitor MANUELL instrumentering. AUTOMATISK instrumentering stöds ännu inte.

Azure Monitor OpenTelemetry-exportörer är de viktigaste komponenterna för att åstadkomma detta. Du kommer att kunna använda exportörerna och deras API:er direkt via det här paketet. Gå till exportdokumentationen för att förstå hur OpenTelemetry- och Azure Monitor-komponenter fungerar när du aktiverar insamling och export av telemetri.

För närvarande är alla instrumentationer som är tillgängliga i OpenTelemetry i betatillstånd, vilket innebär att de inte är stabila och kan ha icke-bakåtkompatibla ändringar i framtiden. Ansträngningar görs för att driva dessa till ett stabilare tillstånd.

Komma igång

Förutsättningar

Om du vill använda det här paketet måste du ha:

Installera paketet

Installera Azure Monitor Opentelemetry Distro med pip:

pip install azure-monitor-opentelemetry

Användning

Du kan använda configure_azure_monitor för att konfigurera instrumentation för din app till Azure Monitor. configure_azure_monitor stöder följande valfria argument. Alla inpassningsparametrar prioriteras framför relaterade miljövariabler.

Parameter Beskrivning Miljövariabel
connection_string Anslutningssträng för Application Insights-resursen. Anslutningssträng fylls i automatiskt från miljövariabeln om den APPLICATIONINSIGHTS_CONNECTION_STRING inte uttryckligen skickas in. APPLICATIONINSIGHTS_CONNECTION_STRING
logger_name Namnet på Python-loggaren under vilken telemetri samlas in. N/A
instrumentation_options En kapslad ordlista som avgör vilka instrumentationer som ska aktiveras eller inaktiveras. Instrumentationer hänvisas till av deras biblioteksnamn. Till exempel inaktiverar Azure Core Tracing och Flask-instrumentationen men {"azure_sdk": {"enabled": False}, "flask": {"enabled": False}, "django": {"enabled": True}} låter Django och de andra standardinstrumentationerna vara aktiverade. Miljövariabeln OTEL_PYTHON_DISABLED_INSTRUMENTATIONS som beskrivs nedan kan också användas för att inaktivera instrumentationer. N/A

Du kan konfigurera ytterligare med OpenTelemetry-miljövariabler som: | Miljövariabel | Beskrivning | |-------------|----------------------| | | OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES | Anger den OpenTelemetry-resurs som är associerad med ditt program. | | OTEL_LOGS_EXPORTER | Om värdet är Noneinaktiveras insamling och export av loggningstelemetri. | | OTEL_METRICS_EXPORTER | Om värdet är Noneinaktiverar du insamling och export av måtttelemetri. | | OTEL_TRACES_EXPORTER | Om värdet är Noneinaktiveras insamling och export av telemetri för distribuerad spårning. | | OTEL_BLRP_SCHEDULE_DELAY | Anger loggningsexportintervallet i millisekunder. Standardvärdet är 5 000. | | OTEL_BSP_SCHEDULE_DELAY | Anger exportintervallet för distribuerad spårning i millisekunder. Standardvärdet är 5 000. | | OTEL_TRACES_SAMPLER_ARG | Anger förhållandet mellan distribuerad spårningstelemetri som ska samplas. Godkända värden finns i intervallet [0,1]. Standardvärdet är 1.0, vilket innebär att ingen telemetri samplas ut. | | OTEL_PYTHON_DISABLED_INSTRUMENTATIONS | Anger vilka av de instrumentationer som stöds som ska inaktiveras. Inaktiverade instrumenteringar kommer inte att instrumenteras som en del av configure_azure_monitor. De kan dock fortfarande instrumenteras manuellt med instrument() direkt. Accepterar en kommaavgränsad lista med gemener biblioteksnamn. Ange till exempel att "psycopg2,fastapi" inaktivera Psycopg2- och FastAPI-instrumentationerna. Standardvärdet är en tom lista som aktiverar alla instrumentationer som stöds. | | OTEL_EXPERIMENTAL_RESOURCE_DETECTORS | En experimentell OpenTelemetry-miljövariabel som används för att ange resursidentifieringar som ska användas för att generera resursattribut. Det här är en experimentell funktion och namnet på den här variabeln och dess beteende kan ändras på ett icke-bakåtkompatibelt sätt. Standardvärdet är "azure_app_service,azure_vm" för att aktivera Azure Resource Detectors för Azure App Service och virtuella Azure-datorer. Om du vill lägga till eller ta bort specifika resursdetektorer anger du miljövariabeln i enlighet med detta. Mer information finns i Dokumentationen om Python-resursidentifiering i OpenTelemetry . |

Azure Monitor OpenTelemetry Exporter-konfigurationer

Du kan skicka konfigurationsparametrarna för Azure Monitor OpenTelemetry-exportören direkt till configure_azure_monitor. Se ytterligare konfiguration som rör export här.

...
configure_azure_monitor(
   connection_string="<your-connection-string>",
   disable_offline_storage=True,
)
...

Exempel

Exempel finns här för att visa hur du använder ovanstående konfigurationsalternativ.

Övervakning i Azure Functions

Spåra korrelation

Spårade inkommande begäranden som kommer till ditt Python-program i Azure Functions korreleras inte automatiskt med telemetri som spåras i det. Du kan uppnå spårningskorrelation manuellt genom att TraceContext extrahera direkt enligt nedan:


import azure.functions as func

from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract

# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()

def main(req: func.HttpRequest, context) -> func.HttpResponse:
   ...
   # Store current TraceContext in dictionary format
   carrier = {
      "traceparent": context.trace_context.Traceparent,
      "tracestate": context.trace_context.Tracestate,
   }
   tracer = trace.get_tracer(__name__)
   # Start a span using the current context
   with tracer.start_as_current_span(
      "http_trigger_span",
      context=extract(carrier),
   ):
      ...

Loggningsproblem

Själva Azure Functions-arbetaren skickar själva loggningstelemetrin utan att använda azure monitor sdk (anropet till configure_azure_monitor()). Detta gör att du kan uppleva dubbletter av telemetriposter när du skickar loggningstelemetri. Vår rekommendation till kunderna är att endast använda SDK eftersom det tillåter mycket mer omfattande telemetri och funktioner än att använda den inbyggda som tillhandahålls av Azure Functions worker. Du kan inaktivera Azure Functions telemetriloggare genom att rensa listan över hanterare för loggaren.

...
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
    root_logger.removeHandler(handler)
...

Se till att anropa ovanstående INNAN några loggare eller anropet till configure_azure_monitor() är konfigurerat.

Du kan också inaktivera loggning via Azure Functions konfiguration.

v2.x+

...
{
  "logging": {
    ...
    "logLevel": {
      "default": "None",
      ...
    }
  }
}
...

v1.x

...
{
  "logger": {
    "categoryFilter": {
      "defaultLevel": "None",
      ...
    }
  }
}
...

Felsökning

Exportören genererar undantag som definierats i Azure Core.

Nästa steg

Mer information finns i dokumentationen .

Bidra

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns på https://cla.microsoft.com.

När du skickar en pull-förfrågan avgör en CLA-robot automatiskt om du måste tillhandahålla ett licensavtal för bidrag med lämplig PR (t.ex. etikett eller kommentar). Följ bara robotens anvisningar. Du behöver bara göra detta en gång för alla repor som använder vårt licensavtal för bidrag.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekoden eller kontakta opencode@microsoft.com med ytterligare frågor eller kommentarer.

Ytterligare dokumentation