Телеметрия — это данные, генерируемые системами и их поведением, включая трассы, метрики и логи.
Трасса фиксирует путь запроса (от приложения или конечного пользователя) по мере его прохождения через многосервисную архитектуру (например, микросервисы и бессерверные приложения).
Трасса состоит из одного или нескольких спанов. Первый спан называется корневым спаном и представляет собой весь жизненный цикл запроса от начала до конца. Дочерние спаны под корневым спаном предоставляют более подробную контекстную информацию о процессе запроса (или различных шагах, составляющих запрос).
Без трасс было бы довольно сложно определить первопричину проблем с производительностью в распределённых системах. Трассы упрощают отладку и понимание распределённых систем, разбивая поток запросов через них.
Спан — это базовый строительный блок распределённого трейсинга, представляющий конкретную операцию или единицу работы. Каждый спан фиксирует определённые действия в рамках запроса, помогая понять детали того, что происходило во время выполнения операции.
Спан содержит имя, временные данные, структурированные лог-сообщения и другие метаданные (атрибуты), которые вместе дают полную картину операции.
В зависимости от положения спана в трассе выделяют два специальных типа спанов:
В распределённых системах теги спана — это пары ключ-значение, прикреплённые к каждому спану, которые содержат детали операции, идентификаторы ресурсов, метрики производительности и информацию об ошибках. Они обеспечивают необходимый контекст для понимания и анализа производительности и поведения сервиса, а также являются важным инструментом для отладки и оптимизации распределённых приложений.
OperationName — это атрибут спана, указывающий имя конкретной операции внутри спана. Обычно это имя используется для идентификации конкретной бизнес-логики или системного вызова, представленного спаном, например, метод HTTP-запроса вместе с URL-путём, краткое описание запроса к базе данных или имя внутреннего вызова функции.
Jaeger — это open-source система распределённого трейсинга. Она предназначена для мониторинга и диагностики сложных распределённых систем на основе микросервисной архитектуры, помогая разработчикам визуализировать трассы запросов, анализировать узкие места производительности и устранять аномалии. Jaeger совместим со стандартом OpenTracing (теперь часть OpenTelemetry), поддерживает несколько языков программирования и хранилищ данных и является ключевым инструментом наблюдаемости в облачно-нативной среде.
OpenTelemetry Collector — это независимый от поставщика агент, который может принимать, обрабатывать и экспортировать телеметрические данные. Он поддерживает приём телеметрии в различных форматах (например, OTLP, Jaeger, Prometheus и многих коммерческих/проприетарных инструментах) и отправку этих данных в один или несколько бекендов. Также поддерживается обработка и фильтрация телеметрии перед экспортом.
Для получения дополнительной информации смотрите Collector.