Отслеживание входящих запросов с помощью Python для OpenCensus

Примечание

Пакет SDK OpenCensus для Python не рекомендуется использовать, но корпорация Майкрософт поддерживает его до прекращения использования 30 сентября 2024 г. Теперь мы рекомендуем использовать предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.

OpenCensus Python и его интеграции собирают данные входящих запросов. Вы можете отслеживать входящие данные запросов, отправляемые в веб-приложения, созданные на основе популярных веб-платформ Django, Flask и Pyramid. Application Insights получает данные в виде requests телеметрии.

Во-первых, инструментируйте приложение Python с помощью последней версии пакета SDK OpenCensus для Python.

Отслеживание приложений Django

  1. Скачайте и установите opencensus-ext-django из PyPI. Инструментируйте приложение с помощью ПО промежуточного django слоя. Входящие запросы, отправленные в приложение Django, отслеживаются.

  2. Включите opencensus.ext.django.middleware.OpencensusMiddleware в файл settings.py в MIDDLEWARE.

    MIDDLEWARE = (
        ...
        'opencensus.ext.django.middleware.OpencensusMiddleware',
        ...
    )
    
  3. Убедитесь, что AzureExporter правильно настроен в разделе settings.pyOPENCENSUS. Для запросов с URL-адресов, которые вы не хотите отслеживать, добавьте их в 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.
        }
    }
    

Пример приложения Django можно найти в репозитории примеров OpenCensus Для Python для Azure Monitor.

Отслеживание приложений Flask

  1. Скачайте и установите opencensus-ext-flask из PyPI. Инструментируйте приложение с помощью ПО промежуточного flask слоя. Входящие запросы, отправленные в приложение 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. Вы также можете настроить приложение flask с помощью app.config. Для запросов с URL-адресов, которые вы не хотите отслеживать, добавьте их в 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.
        }
    }
    

    Примечание

    Чтобы запустить Flask в uWSGI в среде Docker, необходимо сначала добавить lazy-apps = true в файл конфигурации uWSGI (uwsgi.ini). Дополнительные сведения см. в описании проблемы.

Пример приложения Flask, который отслеживает запросы, можно найти в репозитории примеров OpenCensus Для Python для Azure Monitor.

Отслеживание приложений Pyramid

  1. Скачайте и установите opencensus-ext-django из PyPI. Инструментируйте приложение с помощью pyramid средства настройки. Входящие запросы, отправленные в приложение Pyramid, отслеживаются.

    def main(global_config, **settings):
        config = Configurator(settings=settings)
    
        config.add_tween('opencensus.ext.pyramid'
                         '.pyramid_middleware.OpenCensusTweenFactory')
    
  2. Вы можете настроить анимацию pyramid непосредственно в коде. Для запросов с URL-адресов, которые вы не хотите отслеживать, добавьте их в 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)
    

Отслеживание приложений FastAPI

  1. Необходимы следующие зависимости:

  2. Скачайте и установите opencensus-ext-fastapi из PyPI.

    pip install opencensus-ext-fastapi

  3. Инструментируйте приложение с помощью ПО промежуточного 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. Запустите приложение. Вызовы, сделанные в приложение FastAPI, должны отслеживаться автоматически. Данные телеметрии следует регистрировать непосредственно в Azure Monitor.

Дальнейшие действия