Comments 10
Вы бы хоть показали, куда этот propagation вбивать - в терминал ssh, IDE-шку или еще куда.
Ну товарищ про микро сервисы пишет надо полагать в заголовках http или метаданных grpc
В OpenTelemetry есть такой термин как Instrumentation, это по факту набор готовых middleware для различных популярных библиотек. Для http, gPRC тоже есть - вот ссылка на примеры его подключения https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation/google.golang.org/grpc/otelgrpc/example
https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation/net/http
После подключения этого инструмента к http, gRPC, вы сразу увидите все трейсы ваших запросов, но они будут не связаны. Для того что бы их связать нужно просто инициализировать propagation, как показано в статье. Сам instrumentation уже внутри своей реализации производит Inject и Extract.
В код вашего проекта на Go. Теги "Go, программирование" и в конце статьи ссылка, на пример реализации. Полный проект с инструкцией, как его развернуть локально, со всей нужной инфраструктурой: jaeger, NATS.
NATS! И этим все сказано!
Всё достаточно просто, если немного почитать документацию.
Вы до заголовка NATS никак не касались событийно-ориентированного рантайма, а просто пересказали термины распределенной трассировки. Незачет.
А что значит "событийно ориентированный рантайм"? Как вы реализуете свою систему полностью зависит от вашего проекта. Обычно в самом простом случае MQ выступает в роли шины данных между сервисами. У вас может быть rabbitMQ, Kafka это не имеет никакого значения, потому что принципы context propogation в open telemetry остаются такими же. В гайде на примере кода я показал, как ими пользоваться. Если вас интересует настройка инфраструктуры, загляните в пример проекта на GitHub-е, который я прикрепил к статье.
Статья ниачом.
Примеры, для чего, результаты где смотреть
А где вы обычно смотрите трейсы в вашей системе?
OpenTelemery поддерживает множество экспортеров. https://github.com/open-telemetry/opentelemetry-go/tree/main/exporters - Jaeger, OTPL, stdoutrace, zipkin.
В примере, который прикреплен в конце для трассировки используется Jaeger.
Хорошая статья, кратко, по делу, да еще и линк на репо. Спасибо, как раз искал что-то такое.
Трассировка сервисов через очередь сообщений. OpenTelemetry, NATS