Zelfstudie: Het .NET Aspire-dashboard gebruiken met Python-apps
Het .NET.NET Aspire dashboard biedt een geweldige gebruikerservaring voor het weergeven van telemetrie en is beschikbaar als een zelfstandige containerafbeelding die kan worden gebruikt met elke OpenTelemetry-app. In dit artikel leert u het volgende:
- Start het .NET.NET Aspire dashboard in de zelfstandige modus.
- Gebruik het .NET Aspire-dashboard met een Python-app.
Voorwaarden
U hebt het volgende nodig om deze zelfstudie te voltooien:
-
Docker of Podman.
- U kunt een alternatieve containerruntime gebruiken, maar de opdrachten in dit artikel zijn bedoeld voor Docker.
- Python 3,9 of hoger lokaal geïnstalleerd.
- Een voorbeeldtoepassing.
Voorbeeldtoepassing
Deze zelfstudie kan worden voltooid met Flask, Django of FastAPI. Er wordt een voorbeeldtoepassing in elk framework geboden om u te helpen bij het volgen van deze zelfstudie. Download of kloon de voorbeeldtoepassing naar uw lokale werkstation.
De toepassing lokaal uitvoeren:
Ga naar de toepassingsmap:
cd msdocs-python-flask-webapp-quickstart
Maak een virtuele omgeving voor de app:
py -m venv .venv .\.venv\Scripts\Activate.ps1
Installeer de afhankelijkheden:
pip install -r requirements.txt
Voer de app uit:
flask run
Blader in een webbrowser naar de voorbeeldtoepassing op
http://localhost:5000
.
OpenTelemetry toevoegen
Als u het .NET Aspire-dashboard wilt gebruiken met uw Python-app, moet u de OpenTelemetry SDK en exporteur installeren. De OpenTelemetry SDK biedt de API voor het instrumenteren van uw toepassing en de exporteur verzendt telemetriegegevens naar het .NET Aspire dashboard.
Installeer de OpenTelemetry SDK en exporttool:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
Voeg een nieuw bestand toe aan uw toepassing met de naam
otlp_tracing.py
en voeg de volgende code toe: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
Werk uw toepassing (
app.py
voor Flask,main.py
voor FastAPI) bij om de importbewerkingen op te nemen en deconfigure_oltp_grpc_tracing
-functie aan te roepen:import logging from otlp_tracing import configure_otel_otlp logging.basicConfig(level=logging.INFO) tracer = configure_otel_otlp() logger = logging.getLogger(__name__)
Vervang de
print
-aanroepen doorlogger.info
aanroepen in uw toepassing.Start de toepassing opnieuw op.
Frameworkspecifieke instrumentatie
Deze instrumentatie is alleen gericht op het toevoegen van OpenTelemetry aan onze code. Voor gedetailleerdere instrumentatie kunt u de OpenTelemetry Instrumentatiepakketten gebruiken voor de specifieke frameworks die u gebruikt.
Installeer het Flask-instrumentatiepakket:
pip install opentelemetry-instrumentation-flask
Voeg de volgende code toe aan uw toepassing:
from opentelemetry.instrumentation.flask import FlaskInstrumentor # add this line after configure_otel_otlp() call FlaskInstrumentor().instrument()
Het Aspire-dashboard starten
Voer de volgende Aspire opdracht uit om het Docker dashboard in de zelfstandige modus te starten:
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.0
In de Docker logboeken worden het eindpunt en de sleutel voor het dashboard weergegeven. Kopieer de sleutel en navigeer naar http://localhost:18888
in een webbrowser. Voer de sleutel in om u aan te melden bij het dashboard.
Gestructureerde logboeken weergeven
Navigeer door de Python toepassing en u ziet gestructureerde logboeken in het Aspire dashboard. Op de pagina gestructureerde logboeken worden logboeken uit uw toepassing weergegeven en kunt u de logboeken filteren en doorzoeken.
Volgende stappen
U hebt het .NET Aspire-dashboard gebruikt met een Python toepassing. Zie het overzicht van het .NET Aspire en het organiseren van een Aspire toepassing met de .NETvoor meer informatie over het .NET Aspire dashboard.