Controlar pedidos recebidos com o OpenCensus Python

Nota

O SDK Python do OpenCensus foi preterido, mas a Microsoft suporta-o até à descontinuação a 30 de setembro de 2024. Agora, recomendamos a oferta python baseada em OpenTelemetry e fornecemos orientações de migração.

O OpenCensus Python e as respetivas integrações recolhem dados de pedidos recebidos. Pode controlar os dados de pedidos recebidos enviados para as suas aplicações Web criados sobre as arquiteturas Web populares Django, Flask e Pirâmide. O Application Insights recebe os dados como requests telemetria.

Primeiro, instrumente a sua aplicação Python com o SDK Python do OpenCensus mais recente.

Controlar aplicações django

  1. Transfira e instale opencensus-ext-django a partir do PyPI. Instrumente a sua aplicação com o django middleware. Os pedidos recebidos enviados para a sua aplicação Django são monitorizados.

  2. Inclua opencensus.ext.django.middleware.OpencensusMiddleware no seu settings.py ficheiro MIDDLEWAREem .

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. Certifique-se de que o AzureExporter está configurado corretamente em settings.pyOPENCENSUS. Para pedidos de URLs que não quer controlar, adicione-os 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.
        }
    }
    

Pode encontrar uma aplicação de exemplo do Django no repositório de exemplos do Azure Monitor OpenCensus Python.

Controlar aplicações do Flask

  1. Transfira e instale opencensus-ext-flask a partir do PyPI. Instrumente a sua aplicação com o flask middleware. Os pedidos recebidos enviados para a sua aplicação Flask são monitorizados.

    
    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. Também pode configurar a sua aplicação flask através de app.config. Para pedidos de URLs que não quer controlar, adicione-os 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 executar o Flask em uWSGI num ambiente do Docker, primeiro tem de adicionar lazy-apps = true ao ficheiro de configuração uWSGI (uwsgi.ini). Para obter mais informações, veja a descrição do problema.

Pode encontrar uma aplicação de exemplo do Flask que monitoriza os pedidos no repositório de exemplos do Azure Monitor OpenCensus Python.

Controlar aplicações pirâmides

  1. Transfira e instale opencensus-ext-django a partir do PyPI. Instrumente a sua aplicação com o pyramid tween. Os pedidos recebidos enviados para a sua aplicação Pirâmide são monitorizados.

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. Pode configurar o tween pyramid diretamente no código. Para pedidos de URLs que não quer controlar, adicione-os 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)
    

Controlar aplicações FastAPI

  1. São necessárias as seguintes dependências:

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

    pip install opencensus-ext-fastapi

  3. Instrumente a sua aplicação com o fastapi middleware.

    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 a sua aplicação. As chamadas efetuadas à sua aplicação FastAPI devem ser registadas automaticamente. A telemetria deve ser registada diretamente no Azure Monitor.

Passos seguintes