Примеры использования и установки Opentelemetry.
Opentelemetry может использоваться для трассировки, получения метрик и журналирования (логирования).
OpenTracing - это API, с которым ваш код будет взаимодействовать напрямую.
"По сути, ваше приложение будет «инструментировано» с использованием OpenTracing API, а конкретный трассировщик (например, Jaeger или Brave / Zipkin) будет собирать данные и отправлять их куда-нибудь. Это позволяет вашему приложению использовать нейтральный API во всем коде, чтобы вы могли переходить от одного провайдера к другому без необходимости изменения всей базы кода."
Opentelemetry project
Слияние OpenTracing и OpenCensus: путь к конвергенции
Opentelemetry registry
community
OpenTelemetry — Voronezh Toptal Meetup (обзорное видео на русском про OpenTelemetry)
https://medium.com/opentelemetry
OpenTelemetry: beyond getting started
Open tracing
OpenTracing Tutorial - Python
Flask opentracing
Flask-OpenTracing
Tutorial: Tracing Python Flask requests with OpenTracing
https://opentelemetry-python.readthedocs.io/en/latest/
https://opentelemetry-python.readthedocs.io/en/latest/getting-started.html
JavaScript
Тушим пожар. Трассировка с OpenTracing и Jaeger.
Конспект "Трейсинг распределенных систем. Егор Мыскин"
Opentelemetry Jaeger Exporter
Системы распределенной трассировки - лучшие программные решения
Jaeger
Jaeger getting started
Jaeger docker images
Установка клиента Jaeger в Python
OpenTelemetry JavaScript API and SDK
Getting Started with OpenTelemetry JS
Пример использования
pip install opentelemetry-api
pip install opentelemetry-sdk
Для поддержки Jaeger следует установить:
pip install opentelemetry-ext-jaeger
Для поддержки Flask следует установить:
pip install opentelemetry-ext-flask
pip install opentelemetry-ext-requests
Для поддержки FastAPI следует установить:
pip install opentelemetry-instrumentation-fastapi
Получить контейнер с Jaeger-ом:
docker pull jaegertracing/all-in-one:1.18
Запустить контейнер:
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HTTP_PORT=9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 14250:14250 \
-p 9411:9411 \
jaegertracing/all-in-one:1.18
Ui Jaeger-а можно посмотреть по адрtсу http://localhost:16686
Для запуска примеров следует установить пакеты opentelemetry.
Исходники примеров можно взять здесь.
Пример сценария, который генерирует трассировку, содержащую три именованных span-а: «foo», «bar» и «baz» (вывод выполняется в консоль):
python tracing.py
Модифицированный пример для вывода трассировки в Jaeger.
Перед выполнением скрипта следует запустить контейнер с Jaeger-ом командой:
docker run -p 16686:16686 -p 6831:6831/udp jaegertracing/all-in-one
запустить скрипт:
python jaeger-example.py
После выполнения скрипта можно перейти по адресу http://localhost:16686 для просмотра трассировки.
Пример трассировки сервиса на flask (вывод в консоль)
python flask-example.py
Пример трассировки сервиса на flask (трассировка в Jaeger)
python flask-example.py
Пример вывода метрик в консоль
python metrics.py
Пример сервиса на FastAPI с использованием opentelemetry services_info
Сервис выполняет ттрассировку вызовов 2-х сервисов.