チュートリアル: .NET Aspire アプリで Python ダッシュボードを使用する
.NET .NET Aspire ダッシュボード は、テレメトリを表示するための優れたユーザー エクスペリエンスを提供し、任意の OpenTelemetry対応アプリで使用できるスタンドアロン コンテナー イメージとして使用できます。 この記事では、次の方法について説明します。
- スタンドアロン モードで .NET.NET Aspire ダッシュボードを起動します。
- .NET Aspire ダッシュボードを Python アプリで使用します。
前提 条件
このチュートリアルを完了するには、次のものが必要です。
-
Docker または Podman。
- 代替コンテナー ランタイムを使用できますが、この記事のコマンドは Docker用です。
- Python 3.9 以降 ローカルにインストールされます。
- サンプル アプリケーション。
サンプル アプリケーション
このチュートリアルは、Flask、Django、または FastAPI を使用して完了できます。 各フレームワークのサンプル アプリケーションは、このチュートリアルに従うのに役立ちます。 サンプル アプリケーションをローカル ワークステーションにダウンロードまたは複製します。
-
Flask を
する - FastAPI
git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart
アプリケーションをローカルで実行するには:
-
Flask を
する - FastAPI
アプリケーション フォルダーに移動します。
cd msdocs-python-flask-webapp-quickstart
アプリの仮想環境を作成します。
-
Windows の
- macOS/Linux
py -m venv .venv .\.venv\Scripts\Activate.ps1
-
Windows の
依存関係をインストールします。
pip install -r requirements.txt
アプリを実行します。
flask run
Web ブラウザーの
http://localhost:5000
でサンプル アプリケーションを参照します。でローカルで実行されている Flask アプリのスクリーンショット
OpenTelemetry の追加
.NET Aspire アプリで Python ダッシュボードを使用するには、OpenTelemetry SDK とエクスポーターをインストールする必要があります。 OpenTelemetry SDK はアプリケーションをインストルメント化するための API を提供し、エクスポーターはテレメトリ データを .NET Aspire ダッシュボードに送信します。
OpenTelemetry SDK とエクスポーターをインストールします。
pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc
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
インポートを含めて
app.py
関数を呼び出すには、アプリケーション (Flask のmain.py
、FastAPI 用の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__)
print
呼び出しを、アプリケーション内のlogger.info
呼び出しに置き換えます。アプリケーションを再起動します。
フレームワーク固有のインストルメンテーション
このインストルメンテーションは、コードに OpenTelemetry を追加することに重点を置いただけです。 インストルメンテーションの詳細については、使用している特定のフレームワークに対して OpenTelemetry インストルメンテーション パッケージを使用できます。
-
Flask を
する - FastAPI
Flask インストルメンテーション パッケージをインストールします。
pip install opentelemetry-instrumentation-flask
アプリケーションに次のコードを追加します。
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 ログに、ダッシュボードのエンドポイントとキーが表示されます。 キーをコピーし、Web ブラウザーで http://localhost:18888
に移動します。 ダッシュボードにログインするキーを入力します。
構造化ログの表示
Python アプリケーション内を移動すると、Aspire ダッシュボードに構造化されたログが表示されます。 構造化ログ ページには、アプリケーションのログが表示され、ログをフィルター処理して検索できます。
Python アプリケーション ログ を示す ダッシュボードのスクリーンショット
次の手順
.NET Aspire ダッシュボードを Python アプリケーションで正常に使用しました。 .NET .NET Aspire ダッシュボードの詳細については、Aspire ダッシュボードの概要の と、.NET Aspireを使用して アプリケーションを調整する方法を参照してください。
.NET Aspire