Kurz: Použití řídicího panelu .NET Aspire s aplikacemi Python
Řídicí panel .NET.NET Aspire poskytuje skvělé uživatelské prostředí pro zobrazení telemetrie a je k dispozici jako samostatná image kontejneru, která se dá použít s libovolnou aplikací s podporou OpenTelemetry. V tomto článku se dozvíte, jak:
- Spusťte řídicí panel .NET.NET Aspire v samostatném režimu.
- Použijte řídicí panel .NET Aspire s aplikací Python.
Požadavky
K dokončení tohoto kurzu potřebujete následující:
-
Docker nebo Podman.
- Můžete použít alternativní prostředí vykonávání kontejneru, ale příkazy v tomto článku platí pro Docker.
- Python 3.9 nebo vyšší místně nainstalované.
- Ukázková aplikace.
Ukázková aplikace
Tento kurz je možné dokončit pomocí Flask, Django nebo FastAPI. K dispozici je ukázková aplikace v jednotlivých architekturách, která vám pomůže postupovat spolu s tímto kurzem. Stáhněte nebo naklonujte ukázkovou aplikaci do místní pracovní stanice.
Místní spuštění aplikace:
Přejděte do složky aplikace:
cd msdocs-python-flask-webapp-quickstart
Vytvořte pro aplikaci virtuální prostředí:
py -m venv .venv .\.venv\Scripts\Activate.ps1
Nainstalujte závislosti:
pip install -r requirements.txt
Spusťte aplikaci:
flask run
Ve webovém prohlížeči přejděte na ukázkovou aplikaci na
http://localhost:5000
.
Přidání OpenTelemetry
Pokud chcete používat řídicí panel .NET Aspire s aplikací Python, musíte nainstalovat sadu OpenTelemetry SDK a exportér. Sada OpenTelemetry SDK poskytuje rozhraní API pro instrumentaci aplikace a exportér odesílá telemetrická data na řídicí panel .NET Aspire.
Nainstalujte OpenTelemetry SDK a exportér:
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
Do aplikace přidejte nový soubor s názvem
otlp_tracing.py
a přidejte následující kód: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
Aktualizujte aplikaci (
app.py
pro Flask,main.py
pro FastAPI), aby zahrnovala importy a volala funkciconfigure_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__)
Nahraďte
print
volánímilogger.info
ve vaší aplikaci.Restartujte aplikaci.
Instrumentace specifická pro rámec
Tato instrumentace se zaměřuje pouze na přidání OpenTelemetry do našeho kódu. Pro podrobnější instrumentaci můžete použít balíčky OpenTelemetry Instrumentace pro konkrétní architektury, které používáte.
Nainstalujte balíček instrumentace Flask:
pip install opentelemetry-instrumentation-flask
Do aplikace přidejte následující kód:
from opentelemetry.instrumentation.flask import FlaskInstrumentor # add this line after configure_otel_otlp() call FlaskInstrumentor().instrument()
Spusťte řídicí panel Aspire
Pokud chcete spustit řídicí panel Aspire v samostatném režimu, spusťte následující příkaz Docker:
docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
mcr.microsoft.com/dotnet/aspire-dashboard:9.0
V protokolech Docker se zobrazí koncový bod a klíč řídicího panelu. Zkopírujte klíč a přejděte do http://localhost:18888
ve webovém prohlížeči. Zadejte klíč pro přihlášení k řídicímu panelu.
Zobrazení strukturovaných protokolů
Procházejte aplikací Python a na řídicím panelu Aspire uvidíte strukturované protokoly. Na stránce strukturovaných protokolů se zobrazují protokoly z vaší aplikace a můžete protokoly filtrovat a prohledávat.
Další kroky
Úspěšně jste použili řídicí panel .NET Aspire s aplikací Python. Pro podrobnější informace o řídicím panelu .NET.NET Aspire si přečtěte přehled řídicího panelu Aspire, a jak orchestrovat aplikaci Python pomocí hostitele aplikace .NET.NET Aspire.