Skip to content

Support tracing in SDK and add loading to OpenTelemetry client #376

Open
1 of 1 issue completed
Open
@Gazizonoki

Description

@Gazizonoki

Трейсинг - очень мощный инструмент Observability, позволяет расследовать проблемы с запросами.

По-простому, это распределенный stacktrace, который сохраняет вызовы между сервисами. Подробнее можно почитать про это тут

План работы:

  1. Поддержать передачу trace_id в gRPC заголовке traceparent: Add traceparent to TRequestSettings #326. Это позволит соединить спаны клиента и сервера YDB в единый трейс.
  2. Поддержать загрузку спанов уже от самого SDK:
    • Мы не можем завязываться на один клиент отгрузки трейсов, так что надо придумать единый интерфейс, который мы будем реализовывать в различных плагинах (паттерн Адаптер). Можно посмотреть на YDB Go SDK, или на другие драйвера БД.
    • Реализовать плагин для OpenTelemetry клиента. Он будет реализовывать общий интерфейс, пользователи будут передавать его в NYdb::TDriver. Можно выбрать другой OpenTelemetry клиент, если он будет популярнее, тут есть простор для исследования.
    • Разметить вызовы SDK спанами и отгружать их в плагин, который нам передал пользователь. Со спанами важно соблюдать баланс, их должно быть достаточно, чтобы понимать, что было с запросом в SDK, но и не слишком много, чтобы не перегрузить трейс спанами от SDK

Sub-issues

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions