Seguimiento de dependencias con OpenCensus Python

Nota

El SDK de OpenCensus para Python está en desuso, pero Microsoft lo admite hasta la retirada el 30 de septiembre de 2024. Ahora se recomienda la oferta de Python basada en OpenTelemetry y se proporcionan instrucciones de migración.

Una dependencia es un componente externo al que la aplicación llama. Los datos de dependencia se recopilan con OpenCensus Python y sus diversas integraciones. Los datos se envían después a Application Insights en Azure Monitor como telemetría dependencies.

En primer lugar, instrumente la aplicación con el SDK de OpenCensus para Python más reciente.

Dependencias en proceso

El SDK de OpenCensus para Python para Azure Monitor le permite enviar datos de telemetría de dependencias "en proceso" (información y lógica que se produce dentro de la aplicación). Las dependencias en proceso tendrán el campo type como INPROC en Analytics.

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

Dependencias con la integración de "solicitudes"

Realice un seguimiento de las solicitudes salientes con la integración de requests de OpenCensus.

Descargue e instale opencensus-ext-requests desde PyPI y agréguelo a las integraciones de seguimiento. Se realizará un seguimiento de las solicitudes enviadas que usan la biblioteca de solicitudes de 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

Dependencias con la integración de "httplib"

Realice un seguimiento de las solicitudes salientes con la integración de httplib de OpenCensus.

Descargue e instale opencensus-ext-httplib desde PyPI y agréguelo a las integraciones de seguimiento. Se realizará un seguimiento de las solicitudes enviadas mediante http.client para Python3 o httplib para Python2.

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()

Dependencias con la integración de "django"

Realice un seguimiento de las solicitudes salientes de Django con la integración de django de OpenCensus.

Nota

Las únicas solicitudes de Django de salida de las que se realiza un seguimiento son las llamadas a una base de datos. Para las solicitudes realizadas a la aplicación de Django, consulte solicitudes entrantes.

Descargue e instale opencensus-ext-django desde PyPI y agregue la siguiente línea a la sección MIDDLEWARE del archivo settings.py de Django.

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

Se puede proporcionar una configuración adicional; consulte las personalizaciones para obtener una referencia completa.

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

Puede encontrar una aplicación de ejemplo de Django que usa dependencias en el repositorio de ejemplos de Python de OpenCensus de Azure Monitor que se encuentra aquí.

Dependencias con la integración de "mysql"

Realice un seguimiento de las solicitudes salientes de MySQL con la integración de mysql de OpenCensus. Esta integración es compatible con la biblioteca de MySQL-Connector.

Descargue e instale opencensus-ext-mysql desde PyPI y agregue las líneas siguientes al código.

from opencensus.trace import config_integration

config_integration.trace_integrations(['mysql'])

Dependencias con la integración de "pymysql"

Realice un seguimiento de las dependencias de PyMySQL con la integración de pymysql de OpenCensus.

Descargue e instale opencensus-ext-pymysql desde PyPI y agregue las líneas siguientes al código.

from opencensus.trace import config_integration

config_integration.trace_integrations(['pymysql'])

Dependencias con la integración de "postgreSQL"

Realice un seguimiento de las dependencias de PostgreSQL con la integración de postgresql de OpenCensus. Esta integración es compatible con la biblioteca psycopg2.

Descargue e instale opencensus-ext-postgresql desde PyPI y agregue las líneas siguientes al código.

from opencensus.trace import config_integration

config_integration.trace_integrations(['postgresql'])

Dependencias con la integración de "pymongo"

Realice un seguimiento de las dependencias de MongoDB con la integración de pymongo de OpenCensus. Esta integración es compatible con la biblioteca pymongo.

Descargue e instale opencensus-ext-pymongo desde PyPI y agregue las líneas siguientes al código.

from opencensus.trace import config_integration

config_integration.trace_integrations(['pymongo'])

Dependencias con la integración de "sqlalchemy"

Realice un seguimiento de las dependencias mediante SQLAlchemy con la integración de sqlalchemy de OpenCensus. Esta integración realiza un seguimiento del uso del paquete sqlalchemy, independientemente de la base de datos subyacente.

from opencensus.trace import config_integration

config_integration.trace_integrations(['sqlalchemy'])

Pasos siguientes