使用 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 應用程式
從PyPI下載並安裝
opencensus-ext-django
。 使用django
中介軟體檢測您的應用程式。 系統會追蹤傳送至 Django 應用程式的傳入要求。包含在
MIDDLEWARE
底下settings.py
檔案中的opencensus.ext.django.middleware.OpencensusMiddleware
。MIDDLEWARE = ( ... 'opencensus.ext.django.middleware.OpencensusMiddleware', ... )
請確定已在 下方
settings.py
OPENCENSUS
正確設定 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 應用程式
從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)
您也可以透過
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範例應用程式。
追蹤金字塔圖應用程式
從PyPI下載並安裝
opencensus-ext-django
。 使用pyramid
tween 檢測您的應用程式。 系統會追蹤傳送至金字塔圖應用程式的傳入要求。def main(global_config, **settings): config = Configurator(settings=settings) config.add_tween('opencensus.ext.pyramid' '.pyramid_middleware.OpenCensusTweenFactory')
您可以直接在程式碼中設定
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 應用程式
需要下列相依性:
-
在生產設定中,建議您使用 gunicorn 部署 uvicorn。
從PyPI下載並安裝
opencensus-ext-fastapi
。pip install opencensus-ext-fastapi
使用
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!'
執行您的應用程式。 應該會自動追蹤對 FastAPI 應用程式的呼叫。 遙測應該直接記錄至 Azure 監視器。