使用 OpenCensus Python 追蹤相依性

注意

OpenCensus Python SDK 已被取代,但 Microsoft 支援它直到 2024 年 9 月 30 日淘汰為止。 我們現在建議 使用 OpenTelemetry 型 Python 供應專案 ,並提供 移轉指引

相依性是由應用程式呼叫的外部元件。 相依性資料是使用 OpenCensus Python 及其各種整合收集。 接著,資料會傳送至 Azure 監視器下的 Application Insights 作為 dependencies 遙測。

首先,使用最新的 OpenCensus Python SDK 檢測 Python 應用程式。

內含式相依性

適用於 Azure 監視器的 OpenCensus Python SDK 讓您可傳送「內含式」相依性遙測 (應用程式中發生的資訊和邏輯)。 內含式相依性和 INPROC 分析一樣,有 type 欄位。

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

tracer = Tracer(exporter=AzureExporter(connection_string="InstrumentationKey=<your-ikey-here>"), sampler=ProbabilitySampler(1.0))

with tracer.span(name='foo'): # <-- A dependency telemetry item will be sent for this span "foo"
    print('Hello, World!')

使用「要求」整合的相依性

使用 OpenCensus requests 整合,追蹤傳出的要求。

PyPI 下載並安裝 opencensus-ext-requests,然後新增至追蹤整合。 系統會追蹤使用 Python 要求程式庫傳送的要求。

import requests
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace import config_integration
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(['requests'])  # <-- this line enables the requests integration

tracer = Tracer(exporter=AzureExporter(connection_string="InstrumentationKey=<your-ikey-here>"), sampler=ProbabilitySampler(1.0))

with tracer.span(name='parent'):
    response = requests.get(url='https://www.wikipedia.org/wiki/Rabbit') # <-- this request will be tracked

使用「HTTPlib」整合的相依性

使用 OpenCensus httplib 整合,追蹤傳出的要求。

PyPI 下載並安裝 opencensus-ext-httplib,然後新增至追蹤整合。 系統會追蹤使用 Python3 的 http.client 或 Python2 的 httplib 傳送的要求。

import http.client as httplib
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace import config_integration
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

config_integration.trace_integrations(['httplib'])
conn = httplib.HTTPConnection("www.python.org")

tracer = Tracer(
    exporter=AzureExporter(),
    sampler=ProbabilitySampler(1.0)
)

conn.request("GET", "http://www.python.org", "", {})
response = conn.getresponse()
conn.close()

使用「django」整合的相依性

使用 OpenCensus django 整合,追蹤傳出的 Django 要求。

注意

唯一追蹤的傳出 Django 要求,是對資料庫的呼叫。 如需對 Django 應用程式提出的要求,請參閱傳入要求

PyPI 下載並安裝 opencensus-ext-django,然後在 Django settings.py 檔案中,新增下列這一行 MIDDLEWARE

MIDDLEWARE = [
    ...
    'opencensus.ext.django.middleware.OpencensusMiddleware',
]

您可以提供其他設定,請參閱自訂的完整參考。

OPENCENSUS = {
    'TRACE': {
        'SAMPLER': 'opencensus.trace.samplers.ProbabilitySampler(rate=1)',
        'EXPORTER': '''opencensus.ext.azure.trace_exporter.AzureExporter(
            connection_string="InstrumentationKey=<your-ikey-here>"
        )''',
    }
}

您可以在位於這裡找到使用 Azure 監視器 OpenCensus Python 範例存放庫中相依性的 Django 範例應用程式。

使用「mysql」整合的相依性

使用 OpenCensus mysql 整合,追蹤 MYSQL 相依性。 此整合支援 mysql-connector 程式庫。

PyPI 下載並安裝 opencensus-ext-mysql,然後新增下列幾行至您的程式碼。

from opencensus.trace import config_integration

config_integration.trace_integrations(['mysql'])

使用「pymysql」整合的相依性

使用 OpenCensus pymysql 整合,追蹤 PyMySQL 相依性。

PyPI 下載並安裝 opencensus-ext-pymysql,然後新增下列幾行至您的程式碼。

from opencensus.trace import config_integration

config_integration.trace_integrations(['pymysql'])

使用「postgresql」整合的相依性

使用 OpenCensus postgresql 整合,追蹤 PostgreSQL 相依性。 此整合支援 psycopg2 程式庫。

PyPI 下載並安裝 opencensus-ext-postgresql,然後新增下列幾行至您的程式碼。

from opencensus.trace import config_integration

config_integration.trace_integrations(['postgresql'])

使用「pymongo」整合的相依性

使用 OpenCensus pymongo 整合,追蹤 MongoDB 相依性。 此整合支援 pymongo 程式庫。

PyPI 下載並安裝 opencensus-ext-pymongo,然後新增下列幾行至您的程式碼。

from opencensus.trace import config_integration

config_integration.trace_integrations(['pymongo'])

使用「sqlalchemy」整合的相依性

使用 OpenCensus sqlalchemy 整合,並使用 SQLAlchemy 追蹤您的相依性。 無論基礎資料庫為何,此整合都會追蹤 sqlalchemy 套件的使用方式。

from opencensus.trace import config_integration

config_integration.trace_integrations(['sqlalchemy'])

後續步驟