Как стать автором
Обновить

Комментарии 5

Вы упомянули о клиенте и сервере. Стоит в этом случае корневой span начинающий обслуживать запрос от клиента или клиент инициирующий запрос создавать с явным trace.SpanKind
По умолчанию span все Internal
https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#spankind

Спасибо за замечание! Не знал об этом

Пригодится, спасибо за статью

Сам занимался подобной задачей, могу сказать что существует вот такое решение для [сервера](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc#UnaryServerInterceptor) и [клиента](https://pkg.go.dev/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc#UnaryClientInterceptor). По сути делает все тоже самое, что вы написали в разделе *Distributed tracing*. Также есть готовые instrumentations для:
1. github.com/uptrace/opentelemetry-go-extra/otelsql
2. go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo
3. github.com/go-redis/redis/extra/redisotel/v8
Такие обертки упрощают сбор трейсингов сервиса.

По поводу существующих интерцепторов не знал, спасибо!
Но в любом случае, в примере я писал минимальный рабочий код, чтобы было проще понять принцип работы механизмов. А так у меня задача чуть сложнее была, плюс логика сверху еще есть, поэтому я в итоге написал свои интерцепторы для трейсинга)

А вот ссылки 1 и 3 пустые

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории