使用 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. 包含在 MIDDLEWARE 底下 settings.py 檔案中的 opencensus.ext.django.middleware.OpencensusMiddleware

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. 請確定已在 下方 settings.pyOPENCENSUS 正確設定 AzureExporter。 對於您不想追蹤之 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.
        }
    }
    

您可以在 Azure 監視器 OpenCensus Python 範例存放庫中找到 Django 範例應用程式。

追蹤 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 的要求,請將這些要求新增至 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.
        }
    }
    

    注意

    若要在 Docker 環境中於 uWSGI 下執行 Flask,您必須先將 lazy-apps = true 新增至 uWSGI 設定檔 (uwsgi.ini)。 如需詳細資訊,請參閱問題說明

您可以在 Azure 監視器 OpenCensus Python 範例存放庫中找到追蹤要求的 Flask範例應用程式。

追蹤金字塔圖應用程式

  1. PyPI下載並安裝 opencensus-ext-django 。 使用 pyramid tween 檢測您的應用程式。 系統會追蹤傳送至金字塔圖應用程式的傳入要求。

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. 您可以直接在程式碼中設定 pyramid tween。 對於您不想追蹤之 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 監視器。

後續步驟