OpenCensus Python を使用した受信要求の追跡

注意

OpenCensus Python SDK は非推奨になりましたが、Microsoft は 2024 年 9 月 30 日に廃止されるまでサポートしています。 ここでは、OpenTelemetry ベースの Python オファリングを推奨し、移行ガイダンスを提供します。

OpenCensus Python とその統合により、受信要求データが収集されます。 一般的な Web フレームワーク Django、Flask、Pyramid 上に構築された Web アプリケーションに送信された受信要求データを追跡できます。 Application Insights ではデータを requests テレメトリとして受信します。

まず、最新の OpenCensus Python SDK を使用して Python アプリケーションをインストルメント化します。

Django アプリケーションを追跡する

  1. PyPI から opencensus-ext-django をダウンロードしてインストールします。 django ミドルウェアを使用してアプリケーションをインストルメント化します。 Django アプリケーションに送信された受信要求が追跡されます。

  2. settings.py ファイルの MIDDLEWAREopencensus.ext.django.middleware.OpencensusMiddleware を含めます。

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. settings.pyOPENCENSUS に AzureExporter が正しく構成されていることを確認します。 追跡したくない URL からの要求については、その URL を EXCLUDELIST_PATHS に追加します。

    OPENCENSUS = {
        'TRACE': {
            'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1)',
            'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
                connection_string="InstrumentationKey=<your-ikey-here>"
            )''',
            'EXCLUDELIST_PATHS': ['https://example.com'],  <--- These sites will not be traced if a request is sent to it.
        }
    }
    

Django サンプル アプリケーションは、Azure Monitor OpenCensus Python サンプル リポジトリ内にあります。

Flask アプリケーションを追跡する

  1. PyPI から opencensus-ext-flask をダウンロードしてインストールします。 flask ミドルウェアを使用してアプリケーションをインストルメント化します。 Flask アプリケーションに送信された受信要求が追跡されます。

    
    from flask import Flask
    from opencensus.ext.azure.trace_exporter import AzureExporter
    from opencensus.ext.flask.flask_middleware import FlaskMiddleware
    from opencensus.trace.samplers import ProbabilitySampler
    
    app = Flask(__name__)
    middleware = FlaskMiddleware(
        app,
        exporter=AzureExporter(connection_string="InstrumentationKey=<your-ikey-here>"),
        sampler=ProbabilitySampler(rate=1.0),
    )
    
    @app.route('/')
    def hello():
        return 'Hello World!'
    
    if __name__ == '__main__':
        app.run(host='localhost', port=8080, threaded=True)
    
    
  2. app.config を使用して flask アプリケーションを構成することもできます。 追跡したくない URL からの要求については、その URL を EXCLUDELIST_PATHS に追加します。

    app.config['OPENCENSUS'] = {
        'TRACE': {
            'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1.0)',
            'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
                connection_string="InstrumentationKey=<your-ikey-here>",
            )''',
            'EXCLUDELIST_PATHS': ['https://example.com'],  <--- These sites will not be traced if a request is sent to it.
        }
    }
    

    Note

    Docker 環境で uWSGI 下の Flask を実行するには、まず uWSGI 設定ファイル (uwsgi.ini) に lazy-apps = true を追加する必要があります。 詳細については、「問題の説明」を参照してください。

要求を追跡する Flask サンプル アプリケーションは、Azure Monitor OpenCensus Python サンプル リポジトリ内にあります。

Pyramid アプリケーションを追跡する

  1. PyPI から opencensus-ext-django をダウンロードしてインストールします。 pyramid tween を使用してアプリケーションをインストルメント化します。 Pyramid アプリケーションに送信された受信要求が追跡されます。

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. コードで直接 pyramid tween を構成できます。 追跡したくない URL からの要求については、その URL を EXCLUDELIST_PATHS に追加します。

    settings = {
        'OPENCENSUS': {
            'TRACE': {
                'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1.0)',
                'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
                    connection_string="InstrumentationKey=<your-ikey-here>",
                )''',
                'EXCLUDELIST_PATHS': ['https://example.com'],  <--- These sites will not be traced if a request is sent to it.
            }
        }
    }
    config = Configurator(settings=settings)
    

FastAPI アプリケーションを追跡する

  1. 次の依存関係が必要です。

  2. PyPI から opencensus-ext-fastapi をダウンロードしてインストールします。

    pip install opencensus-ext-fastapi

  3. fastapi ミドルウェアを使用してアプリケーションをインストルメント化します。

    from fastapi import FastAPI
    from opencensus.ext.fastapi.fastapi_middleware import FastAPIMiddleware
    
    app = FastAPI(__name__)
    app.add_middleware(FastAPIMiddleware)
    
    @app.get('/')
    def hello():
        return 'Hello World!'
    
  4. アプリケーションを実行します。 FastAPI アプリケーションに対して行われた呼び出しは、自動的に追跡されます。 テレメトリは、直接 Azure Monitor にログされます。

次のステップ