Отслеживание входящих запросов с помощью Python для OpenCensus
Примечание
Пакет SDK OpenCensus для Python не рекомендуется использовать, но корпорация Майкрософт поддерживает его до прекращения использования 30 сентября 2024 г. Теперь мы рекомендуем использовать предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.
OpenCensus Python и его интеграции собирают данные входящих запросов. Вы можете отслеживать входящие данные запросов, отправляемые в веб-приложения, созданные на основе популярных веб-платформ Django, Flask и Pyramid. Application Insights получает данные в виде requests
телеметрии.
Во-первых, инструментируйте приложение Python с помощью последней версии пакета SDK OpenCensus для Python.
Отслеживание приложений Django
Скачайте и установите
opencensus-ext-django
из PyPI. Инструментируйте приложение с помощью ПО промежуточногоdjango
слоя. Входящие запросы, отправленные в приложение Django, отслеживаются.Включите
opencensus.ext.django.middleware.OpencensusMiddleware
в файлsettings.py
вMIDDLEWARE
.MIDDLEWARE = ( ... 'opencensus.ext.django.middleware.OpencensusMiddleware', ... )
Убедитесь, что 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 можно найти в репозитории примеров OpenCensus Для Python для Azure Monitor.
Отслеживание приложений Flask
Скачайте и установите
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)
Вы также можете настроить приложение
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
Скачайте и установите
opencensus-ext-django
из PyPI. Инструментируйте приложение с помощьюpyramid
средства настройки. Входящие запросы, отправленные в приложение Pyramid, отслеживаются.def main(global_config, **settings): config = Configurator(settings=settings) config.add_tween('opencensus.ext.pyramid' '.pyramid_middleware.OpenCensusTweenFactory')
Вы можете настроить анимацию
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
Необходимы следующие зависимости:
-
В рабочей среде рекомендуется развертывать uvicorn с помощью gunicorn.
Скачайте и установите
opencensus-ext-fastapi
из PyPI.pip install opencensus-ext-fastapi
Инструментируйте приложение с помощью ПО промежуточного
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!'
Запустите приложение. Вызовы, сделанные в приложение FastAPI, должны отслеживаться автоматически. Данные телеметрии следует регистрировать непосредственно в Azure Monitor.