使用 OpenCensus Python 跟踪依赖项

注意

OpenCensus Python SDK 已弃用,但 Microsoft 会提供对它的支持,直至 2024 年 9 月 30 日停用它。 我们现在推荐基于 OpenTelemetry 的 Python 产品/服务并提供迁移指南

依赖项是由应用程序调用的外部组件。 可以使用 OpenCensus Python 及其各种集成收集依赖项数据。 然后,将数据作为 dependencies 遥测发送到 Azure Monitor 下的 Application Insights。

首先,使用最新版 OpenCensus Python SDK 检测 Python 应用程序。

进程内依赖项

OpenCensus Python SDK for Azure Monitor 允许发送“进程内”依赖项遥测(应用程序中出现的信息和逻辑)。 在分析中,进程内依赖项的 type 字段将为 INPROC

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!')

使用“requests”集成跟踪的依赖项

通过 OpenCensus requests 集成来跟踪传出请求。

PyPI 下载并安装 opencensus-ext-requests,然后将其添加到跟踪集成。 将跟踪使用 Python requests 库发送的请求。

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 Monitor 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'])

后续步骤