共用方式為


教學課程:使用 .NET Aspire 儀錶板搭配 Python 應用程式

.NET .NET Aspire 儀錶板 提供絕佳的用戶體驗來檢視遙測,並可作為獨立容器映射,可與任何啟用 OpenTelemetry的應用程式搭配使用。 在本文中,您將瞭解如何:

  • 以獨立模式啟動 .NET.NET Aspire 儀錶板。
  • 使用 .NET Aspire 儀錶板搭配 Python 應用程式。

先決條件

若要完成本教學課程,您需要下列項目:

範例應用程式

本教學課程可以使用 Flask、Django 或 FastAPI 來完成。 會提供每個架構中的範例應用程式,以協助您遵循本教學課程。 下載或複製範例應用程式至本機工作站。

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart

若要在本機執行應用程式:

  1. 移至應用程式資料夾:

    cd msdocs-python-flask-webapp-quickstart
    
  2. 建立應用程式的虛擬環境:

    py -m venv .venv
    .\.venv\Scripts\Activate.ps1
    
  3. 安裝依賴項:

    pip install -r requirements.txt
    
  4. 執行應用程式:

    flask run
    
  5. 在網頁瀏覽器中開啟 http://localhost:5000 的範例應用程式。

    在瀏覽器中執行之 Flask 應用程式的螢幕快照

新增 OpenTelemetry

您必須安裝 .NET Aspire SDK 和匯出工具,才能將 Python 儀表板與 OpenTelemetry 應用程式一起使用。 OpenTelemetry SDK 提供用來檢測應用程式的 API,而匯出工具會將遙測數據傳送至 .NET Aspire 儀錶板。

  1. 安裝 OpenTelemetry SDK 和匯出工具:

    pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
    
  2. 將新的檔案新增至名為 otlp_tracing.py 的應用程式,並新增下列程式代碼:

    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
    
  3. 更新您的應用程式(適用於 Flask 的app.py,適用於 FastAPI 的 main.py)以包含匯入並呼叫 configure_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__)
    
  4. 以應用程式中 print 呼叫取代 logger.info 呼叫。

  5. 重新啟動您的應用程式。

架構特定檢測

此儀器化過程僅著重於將 OpenTelemetry 添加至我們的程式碼。 如需更詳細的偵測,您可以使用 OpenTelemetry 偵測套件,以應用於您所使用的特定框架。

  1. 安裝 Flask 偵測套件:

    pip install opentelemetry-instrumentation-flask
    
  2. 將下列程式代碼新增至您的應用程式:

    from opentelemetry.instrumentation.flask import FlaskInstrumentor
    
    # add this line after configure_otel_otlp() call
    FlaskInstrumentor().instrument()
    

啟動 Aspire 儀錶板

若要以獨立模式啟動 Aspire 儀錶板,請執行下列 Docker 命令:

docker run --rm -it -p 18888:18888 -p 4317:18889 --name aspire-dashboard \
    mcr.microsoft.com/dotnet/aspire-dashboard:9.0

在 Docker 記錄中,會顯示儀錶板的端點和密鑰。 複製金鑰,然後在網頁瀏覽器中導航至 http://localhost:18888。 輸入登入儀錶板的金鑰。

檢視結構化記錄

流覽 Python 應用程式,您會在 Aspire 儀錶板中看到結構化記錄。 結構化記錄頁面會顯示來自您應用程式的記錄,而且您可以篩選和搜尋記錄。

Aspire 儀錶板的螢幕快照,其中顯示 Python 應用程式記錄

後續步驟

您已成功將 .NET Aspire 儀錶板與 Python 應用程式搭配使用。 若要深入瞭解 .NET.NET Aspire 儀錶板,請參閱 Aspire 儀錶板概觀,以及如何使用 .NET Aspire協調 應用程式。