Självstudie: Använd instrumentpanelen .NET Aspire med apparna Python
Den .NET.NET Aspire-instrumentpanelen ger en utmärkt användarupplevelse för att visa telemetri och är tillgänglig som en fristående containerbild som kan användas med vilken OpenTelemetry-aktiverad app som helst. I den här artikeln får du lära dig att:
- Starta instrumentpanelen .NET.NET Aspire i fristående läge.
- Använd instrumentpanelen .NET Aspire med en Python app.
Förutsättningar
För att slutföra den här självstudien behöver du följande:
-
Docker eller Podman.
- Du kan använda en alternativ container-runtime, men kommandona i den här artikeln gäller för Docker.
- Python 3.9 eller senare lokalt installerad.
- Ett exempelprogram.
Exempelprogram
Den här självstudien kan slutföras med antingen Flask, Django eller FastAPI. Ett exempelprogram i varje ramverk tillhandahålls som hjälper dig att följa med i den här självstudien. Ladda ned eller klona exempelprogrammet till din lokala arbetsstation.
Så här kör du programmet lokalt:
Gå till applikationsmappen:
cd msdocs-python-flask-webapp-quickstart
Skapa en virtuell miljö för appen:
py -m venv .venv .\.venv\Scripts\Activate.ps1
Installera beroendena:
pip install -r requirements.txt
Kör appen:
flask run
Navigera till exempelprogrammet på
http://localhost:5000
i en webbläsare.
Lägga till OpenTelemetry
Om du vill använda .NET Aspire instrumentpanelen med din Python-app måste du installera OpenTelemetry SDK och exportör. OpenTelemetry SDK tillhandahåller API:et för instrumentering av ditt program och exportören skickar telemetridata till .NET Aspire instrumentpanel.
Installera OpenTelemetry SDK och exportör:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
Lägg till en ny fil i programmet med namnet
otlp_tracing.py
och lägg till följande kod:import logging from opentelemetry import metrics, trace from opentelemetry._logs import set_logger_provider from opentelemetry.exporter.otlp.proto.grpc._log_exporter import ( OTLPLogExporter, ) from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import OTLPMetricExporter from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler from opentelemetry.sdk._logs.export import BatchLogRecordProcessor from opentelemetry.sdk.metrics import MeterProvider from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor def configure_oltp_grpc_tracing( endpoint: str = None ) -> trace.Tracer: # Configure Tracing traceProvider = TracerProvider() processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=endpoint)) traceProvider.add_span_processor(processor) trace.set_tracer_provider(traceProvider) # Configure Metrics reader = PeriodicExportingMetricReader(OTLPMetricExporter(endpoint=endpoint)) meterProvider = MeterProvider(metric_readers=[reader]) metrics.set_meter_provider(meterProvider) # Configure Logging logger_provider = LoggerProvider() set_logger_provider(logger_provider) exporter = OTLPLogExporter(endpoint=endpoint) logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter)) handler = LoggingHandler(level=logging.NOTSET, logger_provider=logger_provider) handler.setFormatter(logging.Formatter("Python: %(message)s")) # Attach OTLP handler to root logger logging.getLogger().addHandler(handler) tracer = trace.get_tracer(__name__) return tracer
Uppdatera ditt program (
app.py
för Flask,main.py
för FastAPI) så att det inkluderar importen och anropar funktionenconfigure_oltp_grpc_tracing
:import logging from otlp_tracing import configure_otel_otlp logging.basicConfig(level=logging.INFO) tracer = configure_otel_otlp() logger = logging.getLogger(__name__)
Ersätt
print
-anropen medlogger.info
-anrop i ditt program.Starta om programmet.
Ramverksspecifik instrumentation
Denna instrumentering har endast fokuserat på att lägga till OpenTelemetry i vår kod. För mer detaljerad instrumentering kan du använda paketen OpenTelemetry Instrumentation för de specifika ramverk som du använder.
Installera Flask-instrumentationspaketet:
pip install opentelemetry-instrumentation-flask
Lägg till följande kod i programmet:
from opentelemetry.instrumentation.flask import FlaskInstrumentor # add this line after configure_otel_otlp() call FlaskInstrumentor().instrument()
Starta instrumentpanel Aspire
Starta instrumentpanelen Aspire i fristående läge genom att köra följande Docker kommando:
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.0
I Docker loggar visas slutpunkten och nyckeln för instrumentpanelen. Kopiera nyckeln och gå till http://localhost:18888
i en webbläsare. Ange nyckeln för att logga in på instrumentpanelen.
Visa strukturerade loggar
Navigera runt i Python-programmet så visas strukturerade loggar i Aspire instrumentpanelen. Sidan strukturerade loggar visar loggar från ditt program och du kan filtrera och söka i loggarna.
Nästa steg
Du har framgångsrikt använt .NET Aspire instrumentpanelen med en Python program. Mer information om .NET.NET Aspire-instrumentpanelen finns i översikten över Aspire-instrumentpanelen och hur man orkestrerar Python-program med hjälp av .NET.NET Aspire-appvärd.
.NET Aspire