Поделиться через


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

Внимание

Пакет SDK для Python OpenCensus снят. Мы рекомендуем использовать предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.

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

Сначала инструментируйте приложение Python с помощью последнего пакета SDK для Python OpenCensus.

Отслеживание приложений 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.py разделе OPENCENSUS. Для запросов из 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 можно найти в репозитории примеров Azure Monitor OpenCensus Python.

Отслеживание приложений 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, который отслеживает запросы в репозитории примеров Python Для Azure Monitor OpenCensus.

Отслеживание приложений Пирамиды

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

    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.

Следующие шаги