IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Golang OpenTelemetry: про наименования трейсеров и спанов

В коде:

возникает вопрос: почему название "miner-login" не появляется в трейсе, а вместо этого фигурирует "checks"? Давайте разберёмся.

1. Роль otel.Tracer("miner-login")

Название, переданное в метод otel.Tracer, используется для идентификации источника трейсов (инструмента, создающего трейс). Например, "miner-login" может указывать на то, что трейс создаётся из конкретного модуля или функции в вашем приложении.

Это метаданные, которые бекенд (например, Jaeger, Zipkin) использует для группировки и анализа. Название miner-login само по себе не влияет на названия отдельных спанов.


2. Роль tracer.Start(ctx, "checks")

  • Параметр "checks" — это имя создаваемого спана.
  • Именно оно отображается в трейсе как имя операции. Каждый спан внутри трейса может иметь своё уникальное имя.

Пример: если вы создаёте несколько спанов для разных этапов выполнения, их имена могут быть такими:

  • authenticate-user
  • verify-credentials
  • checks

3. Почему miner-login не отображается в трейсе?

Название "miner-login" относится к Tracer, а не к отдельным спанам. Обычно эта информация отправляется в бекенд вместе со спанами, но:

  • Она может быть отображена как дополнительное поле в бекенде (например, в колонке «Resource» или «Instrumentation Library»).
  • Если вы не видите "miner-login", убедитесь, что ваш бекенд поддерживает отображение этой информации.

4. Перезаписывает ли Tracer данные контекста?

Нет, название "miner-login" не перезаписывает контекст. Контекст (ctx) передаётся для связывания спанов, передачи метаданных и обработки распределённых трейсов. Название miner-login указывает только на источник трейса, а контекст остаётся неизменным для других операций.


Как проверить, где фигурирует "miner-login":

  1. Посмотреть в бекенде:
    • В Jaeger или Zipkin попробуйте найти информацию в секции «Instrumentation Library» или «Attributes».
  2. Вывести данные вручную: Чтобы проверить, что miner-login передаётся, вы можете использовать логирование:
     
  3. Задать атрибуты вручную: Если вы хотите, чтобы название "miner-login" явно отображалось, добавьте его как атрибут к спану:
     

Вывод

  • "miner-login" — это идентификатор Tracer и не влияет на имена спанов.
  • Названия спанов задаются вручную через Start(ctx, "checks").
  • Чтобы "miner-login" было более заметно, убедитесь, что ваш бекенд отображает данные о библиотеке, либо добавляйте это значение как атрибут к спану.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *