OpenTelemetry на Python — Полное руководство 2023
OpenTelemetry (OTel) - это платформа наблюдения с открытым исходным кодом, которая позволяет собирать данные телеметрии из облачных приложений. Она предлагает инструменты, API и SDK для сбора и генерации метрик, журналов и трассировок. OTel поддерживает несколько языков, включая Java, Python, Go, Ruby, C++ и Javascript.
В этом руководстве будет рассказано, как настроить OTel в вашем сервисе Python с помощью Jaeger, инструмента с открытым исходным кодом, первоначально разработанного Uber.
Если вы ищете такие возможности, как автоматический сбор, возможность воспроизведения сценариев несколькими щелчками мыши и создание тестов на основе трассировки, я рекомендую вам изучить возможность использования Helios. Ниже я включил раздел о том, как установить OTel с помощью Helios.
В чем уникальность Python?
Python - это динамический язык программирования с открытым исходным кодом, широко используемый разработчиками. Он поддерживает объектно-ориентированные и процедурно-ориентированные методы программирования и не требует объявления переменных, поскольку это динамически типизированный язык.
Как и все другие библиотеки инструментария, OpenTelemetry работает путём объединения существующих реализаций функций и извлечения необходимых данных.
Сначала вы должны определить имя модуля, класс и функцию. После этого вы можете предоставить функцию wrapper с исходной реализацией в качестве аргумента. Например, если вы хотите использовать kafka-python, стандартный клиент Kafka на Python, вам нужно перехватывать сообщения Kafka, отправленные функцией “send” класса KafkaProducer.
Начало работы с OTel на Python
Настройка OTel с помощью Python довольно проста. В этом примере я буду использовать простое приложение Flask, чтобы продемонстрировать этапы интеграции OTel в Python.
Шаг 1: Создание приложения на Python
Для начала установите Flask framework с помощью команды pip3 install flask. Затем создайте файл с именем server.py и обновите его с помощью приведённого ниже кода:
Шаг 2: Установка библиотек OpenTelemetry
Установите библиотеки OpenTelemetry, необходимые для работы с приложениями Python. Здесь идёт речь о библиотеках opentelemetry-api и opentelemetry-sdk.
Как только библиотеки будут установлены, вы сможете обновить server.py с помощью объекта трассировки, подобного следующему коду:
Теперь, если вы запустите приложение с помощью команды opentelemetry-instrument --traces_exporter console --metrics_exporter console flask --app server run , вы увидите вывод консоли с подробной информацией о трассировке и метриках.
Шаг 3: Установка Jaeger
Вы можете установить Jaeger для Python, используя приведённую ниже команду.
Но перед этим убедитесь, что Jaeger запущен на вашем локальном компьютере. Вы можете легко настроить Jaeger локально, используя приведённую ниже команду Docker:
Затем вы можете обновить механизм трассировки в вашем файле server.py с помощью Jaeger.
Теперь вы можете повторно запустить приложение и отслеживать трассировки в Jaeger по адресу http://localhost:16686/.
Хотя такой подход позволяет получить хорошее представление о вашем приложении, наиболее продвинутым способом адаптации инструментария на основе ваших требований является перекомпиляция агента с нуля. Кроме того, это позволит вам настроить функции измерительного оборудования в соответствии с вашими требованиями.
Дополнительный функционал, предоставляемый OpenTelemetry
Как уже упоминалось, Jaeger предоставляет функции фильтрации сплошных трассировок. Но после установки OpenTelemetry вы сможете сделать гораздо больше.
Если вы развёртываете OpenTelemetry с Helios, вы можете использовать агент дистрибутива Helios OpenTelemetry Python для сбора дополнительных данных, таких как полезные нагрузки HTTP и обмена сообщениями, и легко просматривать карту вашего сервиса и каталог API.
Вот как это сделать:
Шаг 1: Используйте Helios в своих микросервисах Python
Вы можете напрямую установить Helios для своего сервиса Python с помощью приведённой ниже команды:
Вы также можете использовать Helios со всеми основными веб-фреймворками Python, включая Django, Flask, and FastAPI.
Шаг 2: Настройка переменных окружения
После этого вам необходимо настроить агент Helios с переменными окружения при запуске сервиса:
Или же вы можете напрямую настроить Helios в настройках вашего проекта в файле init.py. :
Вы можете найти дополнительные параметры конфигурации здесь.
Вот и всё! Теперь ваш сервис появится в Helios, где вы сможете использовать данные отслеживания из OpenTelemetry и использовать их для мониторинга ошибок и устранения неполадок.
C Helios вы можете:
- Просматривать полезную нагрузку и данные об ошибках.
- Воспроизводить прерывистые потоки несколькими щелчками мыши.
- Уверенно разрабатывать и развертывать готовый к работе код, видя потоки данных, полезные нагрузки, зависимости и ошибки в вашей локальной среде.
- Делиться и повторно использовать запросы и полезные нагрузки.
- Автоматически генерировать тесты на основе трассировки и обеспечить наблюдаемость для ваших существующих тестовых запусков.
Подобно Python, вы можете легко использовать Helios для инструментирования во многих других языках и фреймворках, включая JavaScript, Node.js , Java, Ruby, .NET, Go, C++ и Collector. Итак, если вы ищете подробную информацию об отслеживании вашей распределённой системы, взгляните на Helios. Вы можете зарегистрироваться на бесплатном уровне Helios здесь.
Статья была взята из этого источника: