Acompanhar solicitações de entrada com OpenCensus Python

Observação

O SDK do Python do OpenCensus foi preterido, mas a Microsoft dá suporte a ele até a desativação em 30 de setembro de 2024. Agora, recomendamos a oferta do Python baseada no OpenTelemetry e fornecemos diretrizes de migração.

O OpenCensus Python e suas integrações coletam dados de solicitação de entrada. Acompanhe os dados das solicitações que chegam aos seus aplicativos web criados com base nas estruturas da web mais populares como o Django, o Flask e o Pyramid. O Application Insights recebe os dados como telemetria de requests.

Primeiro, instrumente seu aplicativo do Python com o SDK do OpenCensus do Python mais recente.

Acompanhar aplicativos do Django

  1. Baixe e instale o opencensus-ext-django a partir do PyPI. Instrumente seu aplicativo com o middleware do django. As solicitações que chegam ao seu aplicativo do Django serão acompanhadas.

  2. Inclua opencensus.ext.django.middleware.OpencensusMiddleware em seu arquivo settings.py em MIDDLEWARE.

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. Verifique se o AzureExporter está configurado corretamente no settings.py em OPENCENSUS. No caso de solicitações de URLs que você não deseja acompanhar, adicione-as ao 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.
        }
    }
    

Você pode encontrar uma amostra de aplicativo do Django no repositório de amostras do OpenCensus do Python no Azure Monitor.

Acompanhar aplicativos do Flask

  1. Baixe e instale o opencensus-ext-flask a partir do PyPI. Instrumente seu aplicativo com o middleware do flask. As solicitações que chegam ao seu aplicativo do Flask serão acompanhadas.

    
    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. Você também pode configurar o aplicativo flask por meio do app.config. No caso de solicitações de URLs que você não deseja acompanhar, adicione-as ao 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.
        }
    }
    

    Observação

    Para executar o Flask em uWSGI em um ambiente do Docker, primeiro você deve adicionar lazy-apps = true ao arquivo de configuração uWSGI (uwsgi.ini). Para obter mais informações, consulte a descrição do problema.

Você pode encontrar uma amostra do aplicativo do Flask que acompanha as solicitações no repositório de amostras do OpenCensus do Python no Azure Monitor.

Acompanhar aplicativos do Pyramid

  1. Baixe e instale o opencensus-ext-django a partir do PyPI. Instrumente seu aplicativo com o tween do pyramid. As solicitações que chegam ao seu aplicativo do Pyramid serão acompanhadas.

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. Você pode configurar a interpolação pyramid diretamente no código. No caso de solicitações de URLs que você não deseja acompanhar, adicione-as ao 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)
    

Acompanhar os aplicativos do FastAPI

  1. As seguintes dependências são necessárias:

  2. Baixe e instale o opencensus-ext-fastapi a partir do PyPI.

    pip install opencensus-ext-fastapi

  3. Instrumente seu aplicativo com o middleware do 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. Execute seu aplicativo. As chamadas feitas ao seu aplicativo do FastAPI devem ser rastreadas automaticamente. A telemetria deve ser registrada diretamente no Azure Monitor.

Próximas etapas