Skip to content

Latest commit

 

History

History
135 lines (86 loc) · 6.68 KB

README.md

File metadata and controls

135 lines (86 loc) · 6.68 KB

HOME

Opentelemetry examples

Примеры использования и установки 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

OpenTelemetry JavaScript API and SDK
Getting Started with OpenTelemetry JS
Пример использования

Install opentelemetry

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

Получить контейнер с 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-х сервисов.