Planet Python на русском
Подписаться
Грэм Дамплтон: экспорт OpenTelemetry в обёртке
Wrapture теперь интегрирует OpenTelemetry как первоклассный пункт назначения для трассировки данных. Подпакет 'wrapture.otel', входящий в комплект каждой установки, обеспечивает бесшовный экспорт в трассирующие бэкенды. Добавив таблицу '[otel]' в конфигурацию, пользователи могут включить трассировку, указать имя сервиса и настраивать индивидуальные настройки сигнала. Такая конфигурация позволяет подробно анализировать поведение приложений, включая ошибки и детали запросов. Переменные среды OpenTelemetry определяют, куда отправляются трассирующие данные, при этом консольные экспортеры доступны для немедленной отладки. Каждое событие приложения преобразуется в span, формируя иерархическую следу. Например, запрос Flask становится серверным span, а внутренние вызовы создают вложенные окраски. Ошибки, такие как «KeyError», точно фиксируются с помощью кодов статуса и деталей исключений. Инструментация автоматически фиксирует аргументы и другие аннотированные данные в виде атрибутов span, при этом чувствительная информация, такая как номера кредитных карт, редактируется. Это гарантирует, что ошибки полностью документированы, появляясь как в конкретной операции, так и в родительском диапазоне запросов. Распределённая трассировка между несколькими процессами достигается через распространение контекста следов W3C. Wrapture вводит контекстные заголовки трассы в исходящие запросы, которые затем анализируются промежуточным ПО принимающей службы. Это позволяет трассировкам распространяться между разными сервисами, сохраняя единый идентификатор трассы. Даже при включённом экспорте OpenTelemetry обёртка сохраняет собственные заданные идентификаторы трассировки, обеспечивая непрерывность. Метрики также генерируются из тех же трассируемых событий, предоставляя агрегированные данные без необходимости явных изменений кода инструмента. Длительность запросов и вызовы автоматически собираются и приписываются релевантной информацией, такой как методы HTTP, маршруты и коды состояния. Эти метрики предоставляют ценную информацию о производительности и уровне ошибок. Накладные расходы при использовании wrapture с OpenTelemetry сопоставимы с прямым использованием SDK OpenTelemetry. Wrapture оптимизирует обработку span, создавая готовые пролёты напрямую, обходя часть внутренних накладных расходов SDK. Это снижает затраты, особенно для операций, вызывающих исключения. Основной принцип дизайна wrapture остаётся неизменным: корректное отслеживание вызовов в реальном времени как для тестирования, так и для трассировки производства. Будь то подача тестовой ленты или трассирующий бэкенд, основной механизм остаётся прежним. Страница экспорта OpenTelemetry содержит дополнительную информацию о продвинутых функциях, таких как дискретизация и интеграция логарифмического сигнала.