В OpenTelemetry (otel), вложенность спанов (или отношения между спанами) определяется контекстом, а не порядком открытия или закрытия спанов в коде....
продолжить чтение
Да, рекомендуется вызывать span.SetStatus после span.RecordError, чтобы явно установить статус спана в зависимости от записанной ошибки. Это не обязательное требование, но такой порядок помогает сделать код более читаемым и логичным. Вот почему:...
продолжить чтение
Нет, метод span.SetStatus не записывает саму ошибку, а только устанавливает общий статус спана. Если вам нужно сохранить подробности об ошибке (например, текст сообщения или стек-трейс), то для этого используется метод span.RecordError....
продолжить чтение
span.RecordError(err) — это метод OpenTelemetry, который позволяет зафиксировать информацию об ошибке в текущем Span. Эта информация станет частью трассировки и поможет разработчикам проанализировать, что пошло не так....
продолжить чтение
Добавление трассировки (tracing) в код — мощный инструмент для анализа производительности и диагностики проблем, но важно сделать это аккуратно, чтобы код оставался читаемым и трассировка была полезной. Вот рекомендации по расстановке трассировок, их именованию и поддержанию чистоты кода....
продолжить чтение
В OpenTelemetry можно добавлять данные об ошибках в трейс с помощью событий и атрибутов Span. Это помогает фиксировать ошибки и предоставлять подробную информацию для анализа....
продолжить чтение
Для просмотра метрик Prometheus в Grafana через Explore выполните следующие шаги:...
продолжить чтение
Чтобы посмотреть метрики в Prometheus UI, выполните следующие шаги:...
продолжить чтение
Кусок кода на golang:
tracer := otel.Tracer("miner-login")
ctx, spanLogin := tracer.Start(ctx, "checks")
почему название "miner-login" не фигурирует потом в трейсе? это название не перезаписывает данные контекста?...
продолжить чтение
В Go для передачи контекста трассировки между архитектурными слоями обычно используется стандартный механизм контекста (context.Context) совместно с инструментами OpenTelemetry (Otel). Вот пошаговое руководство, как это сделать:...
продолжить чтение
TraceQL — это язык запросов, используемый в Grafana Tempo для фильтрации и анализа трассировок. Он позволяет выбирать трейсы и их части (спаны) на основе заданных условий. Ниже приводится описание синтаксиса TraceQL, ключевых элементов языка и примеры использования....
продолжить чтение
Давайте разберем ваш код и определим, в какой момент и как происходит отправка трейса:...
продолжить чтение
OpenTelemetry трассировщик в Go спроектирован так, чтобы минимизировать влияние на основной процесс выполнения программы. Он это достигает за счёт асинхронной обработки данных, эффективного управления буферизацией и отправкой, а также оптимизированного дизайна API. Вот основные принципы, которые помогают ему не тормозить основной процесс:...
продолжить чтение
В OpenTelemetry Go, когда вы создаете новый спан, его родительский идентификатор указывается автоматически через контекст (context.Context). Таким образом, если вы хотите задать родительский идентификатор для нового спана, вам нужно передать контекст, содержащий уже существующий спан, в качестве родителя....
продолжить чтение
В OpenTelemetry Go не нужно создавать новый экземпляр трассировщика для каждого трейса. Обычно, один и тот же трассировщик (tracer) используется для создания нескольких спанов (spans) в рамках одной трассировки (trace)....
продолжить чтение
otel.SetTracerProvider() устанавливает глобальный провайдер трассировки, который становится доступным во всей программе. Это означает, что после вызова этой функции любой пакет или часть кода, использующая OpenTelemetry SDK, сможет получить доступ к этому провайдеру и создавать трейсы и спаны, не создавая отдельный провайдер в каждом пакете....
продолжить чтение
Чтобы отправить трассировки в OpenTelemetry Collector из Go-программы, вам нужно использовать OpenTelemetry Go SDK. Ниже приведен пример того, как это сделать:...
продолжить чтение
OpenTelemetry Collector — это универсальный агент и сервер для сбора, обработки и экспорта телеметрических данных, таких как трассировки, метрики и логи. Он предназначен для упрощения работы с телеметрией, обеспечивая гибкость и масштабируемость.
Collector играет ключевую роль в архитектуре OpenTelemetry, выступая посредником между приложениями, инструментированными OpenTelemetry SDK, и системами хранения и анализа, такими как Prometheus,......
продолжить чтение
Официальная документация OpenTelemetry для Go SDK предоставляет подробные инструкции по настройке и использованию трассировок, метрик и контекстов. Вы можете найти документацию на GitHub и на официальном сайте OpenTelemetry....
продолжить чтение
OpenTelemetry поддерживает Grafana Tempo в качестве бэкенда для трассировок. Tempo интегрируется с OpenTelemetry Collector или другими клиентами OpenTelemetry, позволяя собирать, агрегировать и сохранять трассировки....
продолжить чтение