Seguimiento de las solicitudes entrantes con OpenCensus para 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.

OpenCensus Python y sus integraciones recopilan datos de solicitud entrantes. Puede realizar un seguimiento de los datos de solicitudes entrantes enviados a las aplicaciones web creadas sobre los marcos web más populares Django, Flask y Pyramid. Application Insights recibe los datos como telemetría requests.

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

Seguimiento de aplicaciones de Django

  1. Descargue e instale opencensus-ext-django desde PyPI. Instrumente la aplicación con el middleware de django. Se realiza el seguimiento de las solicitudes entrantes enviadas a la aplicación Django.

  2. Incluya opencensus.ext.django.middleware.OpencensusMiddleware en el archivo settings.py en MIDDLEWARE.

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. Asegúrese de que AzureExporter está configurado correctamente en settings.py en OPENCENSUS. Para las solicitudes de direcciones URL de las que no quiera realizar el seguimiento, agréguelas a 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.
        }
    }
    

Puede encontrar una aplicación de ejemplo de Django en el repositorio de ejemplos de Python de OpenCensus de Azure Monitor.

Seguimiento de aplicaciones de Flask

  1. Descargue e instale opencensus-ext-flask desde PyPI. Instrumente la aplicación con el middleware de flask. Se realiza el seguimiento de las solicitudes entrantes enviadas a la aplicación 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. También puede configurar la aplicación de flask mediante app.config. Para las solicitudes de direcciones URL de las que no quiera realizar el seguimiento, agréguelas a 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.
        }
    }
    

    Nota

    Para ejecutar Flask en uWSGI en un entorno de Docker, primero debe agregar lazy-apps = true al archivo de configuración de uWSGI (uwsgi.ini). Para obtener más información, vea la descripción del problema.

Puede encontrar una aplicación de ejemplo de Flask que realiza un seguimiento de solicitudes en el repositorio de ejemplos de Python de OpenCensus de Azure Monitor.

Seguimiento de aplicaciones de Pyramid

  1. Descargue e instale opencensus-ext-django desde PyPI. Instrumente la aplicación con la interpolación de pyramid. Se realiza el seguimiento de las solicitudes entrantes enviadas a la aplicación Pyramid.

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. Puede configurar la interpolación de pyramid directamente en el código. Para las solicitudes de direcciones URL de las que no quiera realizar el seguimiento, agréguelas a 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)
    

Seguimiento de aplicaciones FastAPI

  1. Se requieren las siguientes dependencias:

  2. Descargue e instale opencensus-ext-fastapi desde PyPI.

    pip install opencensus-ext-fastapi

  3. Instrumente la aplicación con el middleware de 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. Ejecute la aplicación. Se debe realizar un seguimiento automático de las llamadas realizadas a la aplicación FastAPI. La telemetría se debe registrar directamente en Azure Monitor.

Pasos siguientes