Отслеживание входящих запросов с помощью Python для OpenCensus
Внимание
Пакет SDK для Python OpenCensus снят. Мы рекомендуем использовать предложение Python на основе OpenTelemetry и предоставить рекомендации по миграции.
OpenCensus Python и его интеграции собирают входящие данные запроса. Вы можете отслеживать входящие данные запроса, отправленные в веб-приложения, созданные на основе популярных веб-платформ Django, Flask и Пирамиды. Application Insights получает данные в виде requests
телеметрии.
Сначала инструментируйте приложение Python с помощью последнего пакета SDK для Python OpenCensus.
Отслеживание приложений 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 можно найти в репозитории примеров Azure Monitor OpenCensus Python.
Отслеживание приложений 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, который отслеживает запросы в репозитории примеров Python Для Azure Monitor OpenCensus.
Отслеживание приложений Пирамиды
Скачивание и установка
opencensus-ext-django
из PyPI. Инструментируйте приложение сpyramid
помощью tween. Входящие запросы, отправленные в приложение Пирамиды, отслеживаются.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.