Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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_oltp_grpc_tracing() 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