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:
- Azure Monitor OpenTelemetry-exportörer
- En delmängd av OpenTelemetry-instrumentationer som stöds officiellt enligt listan nedan.
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:
- Azure-prenumeration – Skapa ett kostnadsfritt konto
- Azure Monitor – Så här använder du application insights
- Opentelemetry SDK – Opentelemetry SDK för Python
- Python 3.7 eller senare – Installera Python
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 None
inaktiveras insamling och export av loggningstelemetri. | | OTEL_METRICS_EXPORTER
| Om värdet är None
inaktiverar du insamling och export av måtttelemetri. | | OTEL_TRACES_EXPORTER
| Om värdet är None
inaktiveras 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
Azure SDK for Python
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